我已经实现了导航抽屉,它是 Activity 的一个子类。我的应用程序中有很多片段。我的问题在这里:
假设有 3 个片段:
片段1:片段2:片段3
当我启动应用程序时,加载片段1。 当我在片段1上点击某些组件时,我被导航到片段2,依此类推。
所以就像这样:
片段1 > 片段2 > 片段3
当我从片段2按下返回键时,我被导航回到片段1 但是当我从片段3按下返回键时,我被导航回到片段1(而不是片段2)
我希望我的应用程序在按下后退键时像这样
片段1 < 片段2 < 片段3
我使用的 Fragment、FragmentManager 和 FragmentTransaction 如下:
MyFragment fragment = new MyFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(null)commit();
我尝试在我的MainActivity中重写onBackPressed():
@Override
public void onBackPressed() {
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
int count = getFragmentManager().getBackStackEntryCount();
if (count == 0)
super.onBackPressed();
}
FragmentManager
操作都通过FragmentTransaction#addToBackStack()
添加到了返回栈中。我再次阅读了您的问题,仍然不清楚您在这种情况下期望得到什么。请澄清一下。 - LeandroFragment
是否已经在栈中,并使用FragmentManager#findFragmentByTag(String TAG)
进行搜索,如果它没有返回空值,则不要调用addToBackStack()
。如果我的回答解决了你的问题,请将其标记为问题的答案。 - Leandro