我有一个片段onCreateView
我做了一个后台asyn调用来获取要显示的数据
我将作为后台调用结果的对象保存为片段的成员变量
当我看到UI和数据都没问题时,当我按下主页按钮时,应用程序会转到后台。当我重新打开应用程序时,我的片段会在UI中填充数据
所以现在我不确定以下几点:
1)我应该将我的对象保存在onSaveInstanceState
吗?
2)我应该在哪里恢复它?在onCreateView
中传递的捆绑包中
3)什么时候将数据保存在我的捆绑包中?我的意思是如何在不保存它的情况下看到它,我会丢失我的UI中的数据?
答案 0 :(得分:1)
在片段构造函数中,添加以下行:
setRetainInstance(true);
控制是否在Activity中保留片段实例 重新创建(例如从配置更改)。
答案 1 :(得分:0)
这取决于您的数据(大小)。
你想在后面的堆栈上有一个片段(你不能保留片段吗?)
用于"主页按钮操作"和非保留的Fragment实现Parcelable接口并使用onSaveInstanceState()来保存和onCreateView()/ onCreate()以从Bundle恢复数据。
请注意后退按钮,您将丢失数据。
答案 2 :(得分:0)
也像活动一样,您可以使用a保留片段的状态 捆绑,以防活动的过程被杀死,你需要 重新创建活动时恢复片段状态。您可以 在片段的onSaveInstanceState()回调期间保存状态 并在onCreate(),onCreateView()或中恢复它 onActivityCreated()。有关保存状态的更多信息,请参阅 活动文件。
通过每次显示数据,您的片段似乎都能正常工作。
如果您想保存其数据以避免异步提取,可以使用onSaveInstanceState
,这需要您使用Bundle
保存数据。
然后在onCreateView
中检查savedInstanceState
是null
,是否进行异步提取,否则从savedInstanceState
Bundle
重新创建数据。< / p>