replace fragment引發(fā)Switch&SeekBar刷新異常

出現(xiàn)條件:

1、Fragment為變量,不做狀態(tài)保存

2、Fragment中有2個以上的Switch或SeekBar

3、2次進入


現(xiàn)象(例子):

Fragment中的兩個Switch,第1個,會因第2個的控件狀態(tài)而改變。

原因:replace()調(diào)用的時候,該位置被替換的Fragment實例和視圖都會被銷毀,

但是并不會立即被回收,所以如果在Activity中設(shè)置了該Fragment的變量,

?則該變量對應(yīng)的實例對象還是舊的,但是整個顯示的視圖對象卻已經(jīng)是新的了。

因此會被替換的Fragment對象一定不能作為變量存在,如果需要用到對象實例,

可以使用findFragmentByTag獲取實時對象,并且如果需要保存原先的實例,

?則還需要在onSaveInstanceState中保存需要保存的狀態(tài)值。


解決方案:

1、控件使用post設(shè)置Switch或SeekBar的值,如:

mSwitch.setChecked(mChecked);——》mSwitch.post(new Runnable() {

@Override

? ? public void run() {mSwitch.setChecked(mChecked);}

});


2、Fragment用show/hide方式處理切換。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 窗外陽光看似暖陽,墻上的字畫卻被吹得舞步跳躍,我看著窗外樹木的凋謝,幻想著寒冬過去的盛宴。 聽說天上每一顆閃耀的...
    于是lin閱讀 166評論 0 0
  • PS是由Adobe Systems開發(fā)和發(fā)行的,它主要用于對圖形的處理,也就是說主要處理已像素所構(gòu)成的數(shù)字圖像。...
    GRX喵咪閱讀 963評論 0 1
  • 17/03/20 第一期 奇葩大會:觀念分享集結(jié)會 傅首爾:知識分子要活的有煙火氣,我覺得知識分子的典型代表是肖驍...
    知魚君閱讀 971評論 0 3

友情鏈接更多精彩內(nèi)容