我有一个带有两个片段的标签。两个片段都从网络下载数据并显示它们。
典型用例是:用户打开应用程序,Fragment_A下载并显示数据。如果用户单击其他选项卡(选项卡B),则Fragment_B将下载并显示数据。 如果用户返回Fragment_A数据已经存在并显示,但如果他再次选择转到下一个选项卡(Fragment_B),则必须再次下载数据。
那么当用户导航到上一个标签(标签A)时,如何将数据保存到Fragment_B?这是我可以使用onSaveInstanceState()
吗?
另外,为什么Fragment_A会保留数据而不是Fragment_B?代码是相同的,唯一改变的是显示的数据。
答案 0 :(得分:4)
你可以:
托管容器活动中的数据并访问片段中的数据
使用单个对象/应用程序类中托管的某个类
但请记住,无论何时您的进程被杀,您都会在任何情况下丢失数据。如果您希望数据在多个进程spawn中持久存在,则需要将其存储为sqllite /某种持久性。
答案 1 :(得分:0)
是的,您可以将数据存储在onSavedInstanceState()中,但建议不要使用,因为Activity有自己的生命周期方法,并且onSaveInstanceState()不是它的一部分。
所以不保证永远不会被称为。
对于存储,还有其他选项,如