【发布时间】:2014-04-14 00:42:55
【问题描述】:
当我在导航抽屉内的不同片段之间切换时,我正在尝试保存导航抽屉片段的状态。例如:我从 Fragment A 开始触发一些事件,然后切换到 Fragment B。然后当我从 Fragment B 切换回 Fragment A 时,我想看到 Fragment A 的相同状态。
我尝试使用 onSavedInstanceState(Bundle savedInstanceState) 但它仅在片段生命周期中方向发生变化时才被调用。每当我切换到新片段时都会创建一个新片段,但我不知道如何保存片段中的数据并在下次访问时重新加载它。
我也不想使用 backstack(),因为它会删除所有片段,直到我想要恢复的片段。
下面是我如何调用抽屉开关上的片段。
private void selectItem(int position) {
Fragment fragment;
String TAG;
switch (position) {
case 0:
fragment = new FragmntA();
TAG = "A";
break;
case 1:
fragment = new FragmentB();
TAG = "B";
break;
case 2:
fragment = new FragmentC();
TAG = "C";
break;
case 3:
fragment = new FragmentD();
TAG = "D";
break;
case 4:
fragment = new FragmentE();
TAG = "E";
break;
default:
fragment = new FragmentA();
TAG = "A";
}
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, fragment, TAG);
ft.commit()
我不知道片段生命周期中是否有可以保存其状态的点。任何帮助,将不胜感激。谢谢。
【问题讨论】:
-
不是每次都创建一个新的片段,而是只创建一个片段,重用片段A,B,C..等的相同实例,也许还可以在片段上结合setRetainInstance(true)。
标签: android android-fragments savestate