Android片段意外关闭

时间:2013-01-05 09:29:24

标签: android android-fragments android-framelayout

我使用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来强制第二个片段在按回键时重新加载。

有时第三个片段的后退键可以正常工作,它会显示出现时重新加载的第二个片段。

但有时候(因为我可以看到它在我第一次尝试这个步骤时发生)从第三个片段回击键导致我到第一个片段,关闭第二个片段违背我的期望。第一个片段正在重新加载。

如何防止这种奇怪的行为?

1 个答案:

答案 0 :(得分:1)

add()方法将Fragments添加到Container,添加到Container的任何其他片段将排在第一个片段的后面。直到并且除非第一个片段变为不可见,否则它们将不可见。我希望这是你面临的问题。如果你对第一个 - >第二个片段导航使用replace()也会很好。