我使用FrameLayout的持有者活动。
在那里我放了一个带有listview的片段。它工作正常。
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();
这里我使用replace来强制第二个片段在按回键时重新加载。
有时第三个片段的后退键可以正常工作,它会显示出现时重新加载的第二个片段。
但有时候(因为我可以看到它在我第一次尝试这个步骤时发生)从第三个片段回击键导致我到第一个片段,关闭第二个片段违背我的期望。第一个片段正在重新加载。
如何防止这种奇怪的行为?
答案 0 :(得分:1)
add()方法将Fragments添加到Container,添加到Container的任何其他片段将排在第一个片段的后面。直到并且除非第一个片段变为不可见,否则它们将不可见。我希望这是你面临的问题。如果你对第一个 - >第二个片段导航使用replace()也会很好。