我在包含兩個佈局的活動中有一個片段,以顯示不同方向的每個佈局。保留方向變化時不同佈局的先前數據
對於縱向,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
的最佳方式,就像用戶單擊後退按鈕(例如)時出現的那樣?