有時候,我們在同一個activity里面有很多fragment,在橫豎屏的時候,有些fragment要求重新加載數據,有些不需要,如何簡單控制這些需求,本人分享一點小經驗,歡迎大家指正里面的錯誤。
大家都知道橫豎屏翻轉的時候,activity會重啟,fragment也會重新加載,如果現在要求在橫豎屏翻轉的時候,同一個activity中,一個fragment要重新加載,一個不要重新加載,那該怎么辦呢?
如果在activity里面繼承了onConfigurationChanged這個方法之后,這個activity和里面的fragment是不會重新加載的,也就是說顯示的數據和UI不會改變,只是將豎屏的界面顯示成橫屏。為了控制哪個fragment不重啟哪個fragment要重啟。我們只要在onConfigurationChanged方法里面針對不同的fragment做不同的處理就好了。
<span style="white-space:pre;"> </span>@Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); FragmentManager fragmentManager = getFragmentManager(); Fragment oldFragment = null; if ((oldFragment = fragmentManager .findFragmentByTag("Fragment_One")) != null) { Fragment newFragment = new FragmentOne(); FragmentTransaction trans = fragmentManager.beginTransaction(); <span style="white-space:pre;"> </span>trans.remove(oldFragment); <span style="white-space:pre;"> </span>if (newFragment != null) { <span style="white-space:pre;"> </span>trans.add(R.id.fragments_container, newFragment, "Fragment_One"); <span style="white-space:pre;"> </span>} <span style="white-space:pre;"> </span>trans.commit(); } } 假如我們現在有FragmentOne和FragmentTwo,其中FragmentOne要求在橫豎屏的時候activity不重啟,但是FragmentOne要重啟。那么只要在onConfigurationChanged里面判斷當前顯示的如果是FragmentOne就remove掉舊的FragmentOne對象,new一個新的FragmentOne對象重新顯示到當前activity。這樣fragment的數據和UI就可以重新加載和改變了。
這樣當橫豎屏翻轉的時候,我們不想重啟activity,但是不同的fragment,有不同的界面或者需求,我們可以通過上面的方法隨意控制fragment要不要重新加載了。
以上這篇淺談android Fragment橫豎屏翻轉對重新加載的要求就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答