我有一个显示两个片段的活动:
Fragment1
。Fragment1
,它会显示Fragment2
,添加到后台堆栈。片段很简单。Fragment1
包含CheckBox
和EditText
。Fragment2
包含简单的TextView
. 我还调用setRetainInstance(true)
了fragment的onCreate(...)
方法。
问题:如果显示 且设备旋转两次Fragment1
,则会丢失其状态。然而,如果设备仅旋转一次,一切都会按预期进行。Fragment2
重现步骤:
CheckBox
并输入一些文本EditText
Button
启动Fragment2
Back
设备(或ESC
模拟器)上的按钮返回Fragment1
Fragment1
失去其状态(复选框未选中且EditText
为空)。然而,如果你回到Fragment1
之后step#4
-Fragment1
则会按预期保持其状态。
哪里有问题?所有代码如下,包括布局。
主要.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/placeholder"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
片段1.xml:
<?xml version="1.0" encoding="utf-8"?> …
Run Code Online (Sandbox Code Playgroud)