0

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

我有一个托管我的三个片段的活动。由于我希望我的片段之一在设备旋转时保存其实例状态,因此我在清单中为托管片段的活动定义了这一点:

android:configChanges="orientation|screenSize"

这工作得很好。但是,现在我遇到了另一个问题:我的其他片段之一使用了特殊的横向布局。问题是,这种布局不会立即用于设备旋转。我认为这是因为新布局只设置在onCreate.

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

4

2 回答 2

0

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

您可以在片段中覆盖onSaveInstanceState()

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putInt(KEY_INDEX, someIntValue);
}

应该在您的片段被销毁之前调用此方法。

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

if (savedInstanceState != null) {
    someIntValue = savedInstanceState.getInt(KEY_INDEX);            
}

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

于 2013-08-17T21:35:51.400 回答
0

You can put

setRetainInstance(true);

in onCreateView(); method of your Fragment. I think it should do the trick.

于 2013-08-17T22:16:16.163 回答