你好,我有一个活动,其中包含两个片段。
- 片段A
片段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为null的原因是什么。当片段A在backstack中时,唯一被调用的方法是onSaveInstanceState,因此在第一次配置更改后,我的arraylist字段为null,因为我无法将保存在savedInstanceState bundle中的arraylist分配给arraylist字段。
我不想在清单文件中使用android:configchanges属性。
我的问题是如何还原在backstack中的片段的状态。
onSavedInstance()
方法中。然后在onCreateView()
方法中检查如果onSavedInstance
不为空,则只需检索您的ArrayList即可。 - PiyushonStart()
方法时,请先检查您的 ArrayList 是否为 null,然后再设置适配器。 - Piyush