核心就是藉助於繼承通用的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();//繼續執行原有返回邏輯
}
}