将平板电脑纵向放置时,我在一个 Activity 中有3个片段。但是,在风景区中,我只有这些碎片中的2个。我遇到的问题是,从肖像到风景时, Activity 正在创建第三个片段。我收到错误消息,因为无法创建此片段。

我已经弄清楚了正在创建此片段,因为它位于后堆栈中。

我试图通过使用onDestroy方法删除片段

FragmentTransaction f = fragmentManager.beginTransaction();
f.remove(mf);
f.commit();

但是我收到一个错误消息,说在onSaveInstanceState之后我不能使用此功能

将这个片段从后堆栈中取出的正确方法是什么?

更新

我可能应该补充一点,我遇到问题的片段是该库中的mapFragment

https://github.com/petedoyle/android-support-v4-googlemaps

我的使用方式就像这样
mf = MapFragment.newInstance(1, true);

ft = fragmentManager.beginTransaction();
ft.replace(R.id.mapContainer, mf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack("map");
ft.commit();

最佳答案

您可以从FragmentTransaction添加到back状态,并使用FragmentManager pop方法从backstack中删除:

FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove(myFrag);
trans.commit();
manager.popBackStack();

10-07 19:20
查看更多