天天看點

Fragment重疊問題簡單解決方案

       在項目中,遇到了fragment重疊的問題,具體是Activity裡面有4個fragment,是通過FragmentTransaction的add方法進來的,并通過其show和hide控制子fragment的展示和隐藏。

        對于這個重疊問題,搜尋到相關資料的說法就是App被放置到背景(使用者按下Home鍵或開機鍵等),fragment所在Activity有可能被銷毀,Activity被銷毀時其通過onSaveInstanceState儲存了相關的資料,也就是儲存fragment的執行個體。當再回到應用時,通過onCreate中的參數savedInstanceState恢複了之前的fragment,此時的FragmentTransaction再次add了恢複後fragment進去,恢複後的fragment就不再受show和hide控制。

        fragment重疊問題的重制方法為:在設定-開發者選項裡,找到不保留活動的選項(使用者離開後即銷毀每個活動),打開即可。

        根據理論有不少相關的解決方案,我實際用的是一個比較笨的方法,項目顯示重疊部分隻是一部分界面,發現這部分界面正好是沒有任何背景色的,是以我是在每一個相關的fragment的相關布局的根ViewGroup添加背景色來解決這個問題的。

布局檔案:fragment_demo.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">

    //...........

</RelativeLayout>      

繼續閱讀