核心就是借助于继承通用的BaseFragment 、利用Activity的返回监听
1、首先在BaseFragment中定义一个公共方法
public boolean onKeyBackPressed() {
return false;
}
2、在业务LogicFragment 继承 BaseFragment 覆盖 onKeyBackPressed 返回,注意此处返回的布尔值,一会再说
//部分业务代码请忽略,注意返回值
@Override
public boolean onKeyBackPressed() {
if (mCurrLeve==2){
mCurrLeve--;
actionGetTreeTask(mCurrLeve);
return true;//用来自定义事件已经消费
}
return false;//用来自定义事件未消费
}
3、覆盖LogicActivity的onBackPressed方法 将返回时间传递给BaseFragment
@Override
public void onBackPressed() {
BaseFragment fragment = (BaseFragment) getSupportFragmentManager()
.findFragmentById(R.id.content_frame);
if (!fragment.onKeyBackPressed()){//fragment.onKeyBackPressed()返回false代表未消费事件
super.onBackPressed();//继续执行原有返回逻辑
}
}