我有一个包含片段的布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/ID"
class="com.teovald.app.MyFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
</FrameLayout>
我在这个片段的 onCreate 方法中设置了这个使用 setRetainInstance(true) :
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setRetainInstance(true);
....}
最后,我还在其活动 onCreate 中恢复了对该片段的引用:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
FragmentManager fragmentManager = getSupportFragmentManager();
mFragment = (MyFragment) fragmentManager.findFragmentById(R.id.ID);
...
}
但是,每次我旋转我的设备时,都会调用活动的 onCreate ,然后也会调用片段的 onCreate !由于我将 setRetainInstance 设置为 true,因此它不应该发生。这种行为有原因吗?