我有一个 Android 项目,我正在为其创建一个自定义选项卡视图。我以这样一种方式构造了 main Activity
( FragmentActivity
),它在屏幕底部有一个标签栏,FrameLayout
上面有一个。选项卡上的每个选项都会创建一个新选项Fragment
(与该选项相关)。现在,为了防止每次单击选项时重新创建片段,我将片段存储在活动的实例变量中。因此,当单击选项卡选项时,我检查其片段是否已创建,如果尚未创建,则创建并将其添加到FrameLayout
(并隐藏任何现有片段),否则,我只是隐藏现有片段(存储在名为currentlyViewedFragment
) 的实例变量中,并显示与单击的选项匹配的已创建片段。
此外,当onCreate()
调用活动时,我将初始选项卡设置为主页选项卡(选项卡之一)。这很好用,除非重新创建活动(由于方向变化)。在这里,我认为实例变量(本质上是指向已创建片段的指针)失去了它们的值并设置为 null。这会导致创建主页选项卡并覆盖在恢复的视图上。我也知道您可以使用传递给的包保存状态onSaveInstanceState
并使用onRestoreInstanceState
. 但是捆绑包需要包含可序列化的数据。然而,这些实例变量仅仅是指针!我如何恢复他们的价值观?
注意:这个问题在我发表的评论中得到解决。
谢谢。