繁体   English   中英

重新创建活动后在Android中还原实例变量

[英]Restoring instance variables in Android upon activity recreation

我有一个要为其创建自定义标签视图的Android项目。 我已经以这样一种方式来构造主ActivityFragmentActivity ),即它在屏幕底部具有一个标签栏,其上方是一个FrameLayout 选项卡上的每个选项都会创建一个新的Fragment (与该选项有关)。 现在,为防止每次单击选项时重新产生片段,我将片段存储在活动的实例变量中。 因此,当单击选项卡选项时,我检查其片段是否已创建,如果尚未创建,则将其创建并添加到FrameLayout (并隐藏所有现有片段),否则,我将隐藏现有片段(存储在名为currentlyViewedFragment的实例变量中,并显示与clicked选项匹配的已创建片段。

同样,在调用活动的onCreate()时,我将初始选项卡设置为主页选项卡(选项卡之一)。 这很好用,除非重新创建活动(由于方向更改)。 在这里,我认为实例变量(实际上是指向已创建片段的指针)失去了它们的值,并设置为null。 这将导致主页选项卡被创建并覆盖在还原的视图上。 我也知道您可以使用传递给onSaveInstanceState的捆绑包保存状态,并使用onRestoreInstanceState还原它。 但是捆绑软件需要包含可序列化的数据。 但是,这些实例变量仅仅是指针! 如何恢复其价值?

注意:此问题已在下面由我发表的评论中解决。

谢谢。

您问题的答案是使用捆绑包进行状态还原。 在可以放置变量并且可序列化的位置创建一个类,以便可以将其对象放置到包中。 或者,您也可以使用SharedPreferences将实例变量的值存储在手机存储中。 希望您能从我的怪异答案中得到灵感。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM