我在包含两个布局的活动中有一个片段,以显示不同方向的每个布局。保留方向变化时不同布局的先前数据
对于纵向,firstLayout。
For landscape orientation,secondLayout。
这两个布局显示在同一个容器中。
所以我有这样的事情 -
if ((getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
&& getActivity().findViewById(R.id.fragment_container) != null)
{
view = inflater.inflate(R.layout.firstLayout, container, false);
//data
return view;
}
else
{
view = inflater.inflate(R.layout.secondLayout, container, false);
return view;
}
因此,当用户旋转设备(纵向到横向),布局secondLayout
被调用。 。 当用户再次旋转,同时在布局secondLayout
,片段即布局firstLayout
的其他布局叫回在设备
问题是 -
布局firstLayout
正在采取这么多的时间加载回来,就好像应用程序暂停了一段时间,因为它在onCreate()
中做了很多初始化的东西。
因此,我希望布局firstLayout
应该在片段中调用onCreate()
时调用。
所以我只是did-
android:configChanges="orientation|screenSize"
,然后由刚充气我的布局firstLayout
覆盖的方法onConfigurationChanged(Configuration newConfig)
。但通过这样做,我失去了以前的数据。
我也听说setRetainState(true)
用于保留以前的状态,但我不知道如何使用它来获取以前的方向变化数据。
什么是以更快的方式显示布局firstLayout
的最佳方式,就像用户单击后退按钮(例如)时出现的那样?