我使用 FrameLayout 的持有人活动。
在那里我放了一个带有列表视图的片段。它工作正常。
ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.fragments, feedFragment);
ft.commit();
然后我添加另一个片段。
android.support.v4.app.Fragment targetFragment = new MainPhotoFragment();
ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.fragments, targetFragment);
ft.addToBackStack(null);
ft.commit();
在这里,我使用 add() 而不是 replace() 在回击键时返回到列表视图的先前位置。它工作正常。
但是可以从第二个片段导航到第三个片段。
android.support.v4.app.Fragment targetFragment = new FullPhotoFragment();
ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragments, targetFragment);
ft.addToBackStack(null);
ft.commit();
在这里,我使用替换来强制第二个片段在回击键时重新加载。
有时来自第三个片段的返回键工作正常,它显示正在重新加载的第二个片段出现。
但有时(正如我在尝试此步骤时第一次看到的那样)从第三个片段回击键会导致我进入第一个片段,而不是我的期望关闭第二个片段。第一个片段正在重新加载。
如何防止这种奇怪的行为?