ViewPager+Fragment切換 和Fragment.replace的區別?

首先介紹一下ViewPager_Fragment的切換.現有四個Fragment,分別是Fragment_1,Fragment_2,Fragment_3

Fragment_1 經歷 1_onAttach() 和 2_onCreate() 后,

?Fragment_2也開始走了 1_onAttach()和 2_Create()方法;OncreateView();onActivityCreate()onstart();onresume();然后滑動ViewPager,當滑到Fragment_2后,

Fragment_3經歷了從 1__onCreate()方法到6__onResume()方法。Fragment_1卻是沒有走任何生命周期方法。

Fragment_4先走了 1_onAttach(),2_onCreate()后,Fragment_1走 7_onPause,8_onStop,9_onDestroyView()。Fragment_1的生命周期終于開始走。而此時,Frment_4也已經完成了預加載.

當ViewPager中的Fragment大于等于3個的時候,除去展示開頭和結尾兩個Fragment的情況,ViewPager會保留一個Fragment左右兩側以及自身3個Fragment的信息。相鄰的3個Fragment之間來回切換,都沒有走10_onDestroy()和11_onDetach()。Fragment的10_onDestroy和11_onDetach()什么時候會ViewPager中,Fragment的10_onDestroy()以及11_onDetach()會在ViewPager所在的Activity結束后被調用。

Fragment.replace:這種模式每次replace會把生命周期全部執行一遍,如果在這些生命周期函數 里拉取數據的話,就會不斷重復的加載刷新數據。

這里順便說一下

Fragment的使用就我所知就我會的只有兩種吧,一種是add方式來進行show和hide,這種方式你切換fragment不會讓fragment重新刷新,而用replace方式會使fragment重新刷新,因為add方式是將fragment隱藏了而不是銷毀再創建,replace方式每次都是重新創建。

1、什么是FragmentTransaction?

使用Fragment時,可以通過用戶交互來執行一些動作,比如增加、移除、替換等。所有這些改變構成一個集合,這個集合被叫做一個transaction。可以調用FragmentTransaction中的方法來處理這個transaction,并且可以將transaction存進由activity管理的back stack中,這樣用戶就可以進行fragment變化的回退操作。可以這樣得到FragmentTransaction類的實例:

FragmentTransaction的commit和commitAllowingStateLoss的區別

用add(), remove(), replace()方法,把所有需要的變化加進去,然后調用commit()方法,將這些變化應用。在commit()方法之前,你可以調用addToBackStack(),把這個transaction加入back stack中去,這個back stack是由activity管理的,當用戶按返回鍵時,就會回到上一個fragment的狀態。你只能在activity存儲它的狀態(當用戶要離開activity時)之前調用commit(),如果在存儲狀態之后調用commit(),將會拋出一個異常。這是因為當activity再次被恢復時commit之后的狀態將丟失。如果丟失也沒關系,那么使用commitAllowingStateLoss()方法。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Fragment概述 Fragment是Activity中用戶界面的一個行為或者說是一部分。主要是支持大屏幕上動態...
    wangling90閱讀 11,596評論 5 75
  • Fragment的應用真的是越來越廣泛了,之前Android在3.0版本加入Fragment的時候,主要是為了解決...
    閑庭閱讀 2,938評論 0 10
  • 《Android Fragment完全解析,關于碎片你所需知道的一切》 我們都知道,Android上的界面展示都是...
    cxm11閱讀 2,226評論 2 19
  • "紙上得來終覺淺,絕知此事要躬行。"在訓戰結合之前,聽了許多人關于職場的感悟,看了許多關于職場方面的書,受到了許多...
    田曉宇2017閱讀 729評論 0 0
  • 無論你看過多少書,做過多少事,如果你沒有做記錄,那么這些書跟你沒看過是一樣的,這些事下次你做時還會像第一次去做...
    阿龍仔閱讀 679評論 0 0