Android 如何保存片段的实例状态,但仍然提供横向布局?

Android 如何保存片段的实例状态,但仍然提供横向布局?,android,android-fragments,rotation,oncreate,Android,Android Fragments,Rotation,Oncreate,如果这个问题一开始听起来很奇怪,下面是解释: 我有一个活动,它承载了我的三个片段。由于我希望我的一个片段在设备旋转时保存其实例状态,因此我在清单中为承载片段的活动定义了以下内容: android:configChanges="orientation|screenSize" 这个很好用。然而,现在我遇到了另一个问题:我的另一个片段使用了一种特殊的景观布局。问题是,设备旋转时不会立即使用此布局。我认为这是因为新的布局仅在创建时设置为onCreate 我能做些什么来解决这个问题?我希望立即设置横向布

如果这个问题一开始听起来很奇怪,下面是解释:

我有一个活动,它承载了我的三个片段。由于我希望我的一个片段在设备旋转时保存其实例状态,因此我在清单中为承载片段的活动定义了以下内容:

android:configChanges="orientation|screenSize"
这个很好用。然而,现在我遇到了另一个问题:我的另一个片段使用了一种特殊的景观布局。问题是,设备旋转时不会立即使用此布局。我认为这是因为新的布局仅在创建时设置为
onCreate


我能做些什么来解决这个问题?我希望立即设置横向布局。

据我所知,您需要将configChanges参数添加到清单中

您可以在片段中重写

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putInt(KEY_INDEX, someIntValue);
}
应该在片段被销毁之前调用此方法

现在在您的onCreate(Bundle savedInstanceState)(或onCreateView())方法中:

这样,它就不应该干预任何其他特殊片段

你可以把

setRetainInstance(true);

在onCreateView()中;你的片段的方法。我认为它应该会起作用。

我也是这么想的。但它并没有达到目的。对我来说,这是个谜。。。
setRetainInstance(true);