日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Fragment遇到重叠问题的解决方案

發布時間:2023/12/15 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Fragment遇到重叠问题的解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原因如下:

容器的activity被系統GC,導致activity的所有生命周期重新被調用,兩個fragment便會重疊出錯。

原因是當activity被意外回收時會調用onSaveInstanceState()保持自身的一些狀態和信息,以備在onCreate()方法中能夠直接獲取而不需要重新創建。?

fragment的實例也會在onSaveInstanceState()中進行保存,所以在onCreate()方法中等于創建了兩個Fragment的實例,當我控制一個fragment隱藏時,假設這個fragment的名字叫aFragment,由于現在activity實際上有兩個aFragment,而我只隱藏了一個所以會導致fragment重疊。

解決方案如下:

控制activity的onCreate()方法讓其只創建一次Fragment。

?@Override protected void onCreate(@Nullable Bundle savedInstanceState) {

// 在頁面重啟時,Fragment會被保存恢復,而此時再加載Fragment會重復加載,導致重疊 ;

if(saveInstanceState == null){ // 或者 if(findFragmentByTag(mFragmentTag) == null)

// 正常情況下去 加載根Fragment } }

判斷savedInstanceState是否為空可以知道這是第一次創建還是GC之后再次調用的onCreate(),

只在第一次onCreate()時創建aFragmen的實例,就可以避免重疊的問題。?

還有一個辦法就是重寫activity的onSaveInstanceState()方法,

去掉其中保存fragment的代碼,缺點是當頁面比較復雜時,

saveInstance除了保存fragment的狀態還保存了所有view的狀態,

必須將view的狀態保存寫一遍,所以推薦使用第一種方法。

總結

以上是生活随笔為你收集整理的Android Fragment遇到重叠问题的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。