2015-06-24 46 views
1

我在我的片段之一中使用ToggleButtons時遇到了一些麻煩。我有一個主要的活動,我加載了一些我添加到BackStack的片段。Android:當使用back stack(片段)時,可繪製選擇器未更新

在其中的一個片段中,我有一個列表視圖,其上有3個ToggleButtons。這些按鈕有一個可繪製的背景:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true"> 
     <shape android:shape="oval"> 
      <solid android:color="@color/greenbutton" /> 
      <stroke android:width="4dp" android:color="@color/actionBlueLight"/> 
     </shape> 
    </item> 
    <item android:state_checked="false"> 
     <shape android:shape="oval"> 
      <solid android:color="@color/greenbutton" /> 
     </shape> 
    </item> 
</selector> 

當我按下其中一個按鈕時,過濾我的ListView。我可以在我的列表中選擇一個項目,它將啓動另一個片段(也添加到背堆棧中)。

我的問題是當我按下後退按鈕並回到我的ListView片段,按鈕的背景不更新。我的意思是,我把 在我的片段:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance) { 
    ... 
    Log.d(TAG,"Green = "+buttonGreen.isChecked()); 
    Log.d(TAG,"Orange = "+buttonOrange.isChecked()); 
    Log.d(TAG,"Red = "+buttonRed.isChecked()); 
    ... 
} 

所有按鈕似乎未選中,但是這是覈對按鈕(從器isChecked()來)之前,我切換到另一個片段仍然有背景對應state_checked =「真」。

我試圖invalidate()按鈕來刷新他們在onCreateView但它什麼都不做。

回答

0

嗯,我終於設法解決我的問題,強制取消我的Fragment的onStop()方法中的ToggleButtons。這樣我就可以確定,在popBackStack()之後,當fragment將被實現時,默認背景不能是與state_checked =「true」關聯的背景。

public void onStop() { 
    buttonGreen.setChecked(false); 
    buttonOrange.setChecked(false); 
    buttonRed.setChecked(false); 

    super.onStop(); 
} 

它看起來像一個解決方法,我將不勝感激明白爲什麼按鈕的狀態出現在onCreateView爲「未登記」(),而繪製可見的是一個「檢查」按鈕。

相關問題