Activity + Fragment 页面重叠问题
Activity + Fragment 頁面重疊問題
今天在遇到一個很奇怪的問題,我們的軟件是用Activity + Fragment構(gòu)成,在某些場景下,居然發(fā)現(xiàn)了有Fragment重疊的現(xiàn)象,究其本質(zhì),是因為原來未被銷毀,而又新建了一個Fragment,那么這種情況怎么避免呢。
一、 造成問題的原因
根本原因:Activity被銷毀并重新創(chuàng)建了,但已經(jīng)加載過的Fragmen被保存了下來,這時Activity重新創(chuàng)建時又產(chǎn)生了新的Fragment,所以重疊了。
問題場景:
深入探究為什么橫豎屏后會產(chǎn)生這個現(xiàn)象呢?
我在網(wǎng)上找到贊同的解釋:
當(dāng)我們旋轉(zhuǎn)屏幕的時候,activity會被銷毀并重新創(chuàng)建,并且在銷毀之前執(zhí)行了onSaveInstanceState(Bundle outState)這個方法。這個方法會保存activity的一些信息,其中就包括添加過的fragment,當(dāng)activity被重新創(chuàng)建時,會初始化其中的變量,這個時候點擊底部導(dǎo)航的話會重新去添加fragment,也就導(dǎo)致了重疊的問題。
二、 解決方法
為了模擬這一場景,可在手機(jī) 開發(fā)者選項-> 應(yīng)用->不保留活動 模擬場景。
解決方式一:
在Activity回收時不保存狀態(tài),這樣當(dāng)Activity銷毀時再進(jìn)入時,就重新加載視圖
解決方式二:
總結(jié)
以上是生活随笔為你收集整理的Activity + Fragment 页面重叠问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XML学习笔记——XSL
- 下一篇: PR输出多音轨文件