android app画面重叠,Android重新打开APP应用程序或activity后fragment 重叠问题
問題發生的場景:
產生原因:
解決方法1:
(太low,不推薦使用。不能恢復重啟前的界面)
直接在包含Fragment的Activity中復寫onSaveInstanceState()方法,使其空實現;(在BaseActivity實現)不傳遞任何信息,自然不會恢復fragment,也就沒有重疊了,全部重新創建一次
解決方法2:
(墻裂推薦)
onSaveInstanceState保存狀態,根據需要恢復。有findTag肯定就有setTag的地方。
不知你們發現沒有,在hideFragment方法里面明明把所有的fragment都隱藏了,但是重新打開應用還是呈現出退出之前的界面,因為我使用了有兩個形參的onSaveInstanceState方法。PersistableBundle 就是用來做數據持久化的,所有還是顯示上一場退出的那個界面。此時呈現的界面其實是新建的,而不是之前的,之前的已經被隱藏了。當然也可以使用只有一個形參的onSaveInstanceState方法。但是就要自己手動再show一個新的fragment出來。可能有人覺得在hideFragment不隱藏就好了,但是切換的時候還是要用findFragmentByTag找出來再隱藏,不然還是有重疊的問題。
解決方法3:
(方法3思路是最高端的,但還是推薦方法2)
在basefragment中重寫onSaveInstanceState,既然系統沒保存那就手動保存
然后會發現在主activity切換fragment的時候還是會有重疊問題。因為你在切換的時候可能做了隱藏的操作,但是其實你隱藏的是新new出來的fragment,而不是重啟之前的fragment。所以還是要在主activity的oncreate中做判斷然后寫方法2中的hideFragment方法。所以我還是推薦方法2.
總結
如果你是想解決在APP主界面底部按鈕切換fragment導致的重疊問題選擇方法2。如果你只是單純的多個fragment造成的重疊問題可以選擇方法3。
總結
以上是生活随笔為你收集整理的android app画面重叠,Android重新打开APP应用程序或activity后fragment 重叠问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XSL语法
- 下一篇: Establishing Android