我遇到了以下问题。我试图在配置更改时保留我的一个片段的布局。因此我想,我可以使用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;
}
}
答案 0 :(得分:0)
你称之为“黑客”的东西实际上并非如此......你的清单中的android:configChanges="orientation"
只是告诉Android框架而不是方向更改的默认行为(关闭并重新启动你的应用,导致onCreateView()
中的Fragment
也被调用,您将在自己的应用中自行处理方向更改。
它不做(当然)是实现你想要的行为(即保持你的一个标签的布局不变)。您必须自己完成此操作,例如将所有其他布局替换为特定的纵向/横向布局,但保持特定选项卡不变。您在onConfigurationChanged()
的{{1}}回调中实施了此行为,顺便提一下,只有在您的清单中设置Activity
后才能调用此行为。