我的应用程序有一个导航抽屉,其中有三个项目链接到三个片段A,B和C
当我点击任何片段的后退按钮时,应用程序退出。我通过在我的基本活动中声明这些常量来解决这个问题:
public static boolean IS_FRAGMENT_A = false;
public static boolean IS_FRAGMENT_B = false;
public static boolean IS_FRAGMENT C = false;
然后在selectView方法中我这样做了:
private void displayView(int position) {
IS_FRAGMENT_A = false;
IS_FRAGMENT_B = false;
IS_FRAGMENT_C = false;
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new FragmentA();
IS_FRAGMENT_A = true;
break;
case 1:
fragment = new FragmentB();
IS_FRAGMENT_B = true;
break;
case 2:
fragment = new FragmentC();
IS_FRAGMENT_C = true;
break;
default:
break;
}
在覆盖onBackPressed()
方法中,我做了这个
public void onBackPressed() {
if (IS_FRAGMENT_A) {
finish();
} else {
displayView(0);
}
}
当从导航抽屉导航到这些片段时,这很好。但是,当我通过ActionBar按钮转到任何片段时,onBackPressed方法不起作用。
在片段A中,我有一个ActionBar按钮,可以将我带到片段B:
public boolean onOptionsItemSelected(MenuItem menuItem) {
int id = menuItem.getItemId();
switch (id) {
case R.id.action_new:
Fragment fragmentB = new FragmentB();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, fragmentB);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
return true;
default:
return super.onOptionsItemSelected(menuItem);
}
}
当我通过此方法导航到FragmentB后退按钮时,应用会退出,这与我通过导航抽屉导航到它不同。
我尝试将它添加到FragmentB的onCreate()方法中,但没有运气:
BaseActivity.IS_FRAGMENT_B = true;
我的问题是,无论我如何到达那里,如何让后退按钮在所有片段中都能正常工作?