Fragment的使用
直接在布局文件中使用
在布局文件中設(shè)置<fragment> 標(biāo)簽筝野,設(shè)置標(biāo)簽對應(yīng)的Fragment類的name 即可
動態(tài)添加
在Activity中利用FragmentTransaction 的 replace ,add, remove ,hide ,show 方法來動態(tài)的 添加刪除隱藏顯示Fragment 倍啥,需要在Activity的Layout 中有FrameLayout
Fragment重疊異常
原因
1、發(fā)生了頁面重啟(旋轉(zhuǎn)屏幕亚脆、內(nèi)存不足等情況被強(qiáng)殺重啟)。
FragmentManager幫我們管理Fragment抵屿,當(dāng)發(fā)生“內(nèi)存重啟”摹恰,他會從棧底向棧頂?shù)捻樞蛞淮涡曰謴?fù)Fragment;
2硼婿、重復(fù)replace|add Fragment 或者 使用show , hide控制Fragment锌半。
在onCreate中加載Fragment,并且沒有判斷saveInstanceState==null寇漫,導(dǎo)致重復(fù)加載了同一個Fragment導(dǎo)致重疊刊殉。
解決方式
添加Fragment 的時(shí)候綁定一個tag,這樣當(dāng)Activity重啟的時(shí)候利用Fragmentmanager的 findFragmentByTag方法找到對應(yīng)的Fragment州胳,然后hide(),show()對應(yīng)的Fragment
也可以利用getFragments()可以獲取到當(dāng)前FragmentManager管理的棧內(nèi)所有Fragment记焊,然后再對每一個Fragment分別處理。