如何在配置更改时在android片段中保留我的布局?

时间:2013-08-19 09:10:28

标签: android view android-fragments oncreate

我遇到了以下问题。我试图在配置更改时保留我的一个片段的布局。因此我想,我可以使用setRetainInstance(true)。然而,结果证明不起作用。问题是,每次配置更改时都会调用onCreateView,以便我的布局重置为初始状态。

我可以做些什么来保护我的布局? 我是否必须将代码移到onCreateView的其他地方?

请注意:我无法使用android:configChanges="orientation"清单中的黑客攻击,因为我的标签托管活动会托管更多标签。我只想在一个标签中保留状态。

以下是我的一些代码:

public class MyFragment extends SherlockFragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);   
    setRetainInstance(true);
    View rootView = inflater.inflate(R.layout.abc, container, false);

    // Some more code that was omitted ..

    return rootView;
}
}

1 个答案:

答案 0 :(得分:0)

你称之为“黑客”的东西实际上并非如此......你的清单中的android:configChanges="orientation"只是告诉Android框架而不是方向更改的默认行为(关闭并重新启动你的应用,导致onCreateView()中的Fragment也被调用,您将在自己的应用中自行处理方向更改。

它不做(当然)是实现你想要的行为(即保持你的一个标签的布局不变)。您必须自己完成此操作,例如将所有其他布局替换为特定的纵向/横向布局,但保持特定选项卡不变。您在onConfigurationChanged()的{​​{1}}回调中实施了此行为,顺便提一下,只有在您的清单中设置Activity后才能调用此行为。