嗨,我有一个有两个片段的活动.
>片段A
>片段B
> Fragment 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中片段的状态.
最佳答案
我通过将该片段的所有细节传递给主要活动,然后将其添加到backstack并将状态保存在main活动的savedInstance状态以及每当Backstack更改并且之前的片段可见时实现了保留backstack中片段状态的目标我从主活动传递该片段的已保存实例状态,这样我保留了状态.我不确定这是否是正确的做法.