1

我在包含兩個佈局的活動中有一個片段,以顯示不同方向的每個佈局。保留方向變化時不同佈局的先前數據

對於縱向,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的最佳方式,就像用戶單擊後退按鈕(例如)時出現的那樣?

回答

0

setRetainState(真),不與2個片段工作,所以你必須通過數據betwee那些2個片段:

谷歌的代碼: http://developer.android.com/training/basics/fragments/communicating.html

上計算器的一些例子: Pass data between fragments Data Sharing between Fragments and Activity in Android

或者只是將數據存儲在類變量中

如果用戶有t O輸入數據時,不要忘了凌駕於onCreateView和附加數據上onAttach

更多的信息在這裏: http://developer.android.com/reference/android/app/Fragment.html

相關問題