android恢复在backstack中的片段的实例状态

kri*_*hna 5 java android listview android-listview android-fragments

嗨,我有一个有两个片段的活动.

  1. 片段A.
  2. 片段B

    • 片段A有一个EditText和一个ListView.
    • 一旦我在EditText中输入内容并点击Enter,我就会填充ListView.
    • 现在片段A的ListView填充了数据.
    • 单击片段A的ListView上的任何项将将用户发送到片段B.
    • 此时我正在用片段B替换片段A.
    • 因此,当用户按下后退按钮时,他会回到片段A

现在的问题是,如果用户在片段B中并且配置更改发生像屏幕旋转等不止一次,那么我的ListView是空的,因为我的arraylist为null.

请注意,我在片段A和片段B中使用onSavedInstanceState.如果我的当前片段是片段A并且发生配置更改,那么恢复状态就没有问题,因为在onCreateView中我从bundle获取了arraylist.

我知道当我从片段B回到之前在backstack中的片段A时,我的arraylist为空的原因.当片段A在backstack中时,被调用的唯一方法是onSaveInstanceState,因此在第一次配置更改后我的arraylist字段为null因为我无法将存储在savedInstateState包中的arraylist分配给arraylist字段.

我不想在清单中使用android:configchanges属性.

我的问题是如何恢复backstack中片段的状态.

Rep*_*tor 1

您可以在活动清单文件中使用setRetaininstance(true)inonAttach和此行 。ConfigChanges = "screenSize|keyBoardHidden|orientation"