2015-08-27 103 views
3

我正在開發一款應用程序,該應用程序需要與Android 4.0之前的設備兼容。是否有可能創建一個OnClickListener來處理ToggleButton和Switch

在pre 4.0版本中,我必須使用ToggleButton,並且在4.0後使用Switch。就用戶而言,它們的功能相同。當他們被點擊時,他們應該有相同的行爲。

我想寫一個OnClickListener,它們都可以工作,這樣我就不會複製大量的代碼。在Fragment內部使用Switch/ToggleButtons,因此只需將編號爲onClickListener的呼叫置於佈局中即可。

在努力嘗試,同時爲SwitchToggleButton,我設置了onClickListener到pushSelector,那就是:

private View.OnClickListener pushSelector = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (((ToggleButton) v).isChecked() || ((Switch) v).isChecked()) { 
       // code 
      } else { 
       // code 
      } 
     } 
    }; 

毫不奇怪,這沒有工作,但我想我給它一去不復返。

是否可以有一個單獨的onClickListener可以同時處理ToggleButtonSwitch,或者我需要爲每個單獨設置一個onClickListener

+0

使用開關的情況下將其與isinstanceof() –

+0

不是一個很好的做法,但你可以做比較來檢查選擇的視它通過實現ToggleButton的點擊監聽器並務實地處理這些控件的狀態 –

回答

3

請考慮使用a OnCheckedChangeListener,因爲Switch和ToggleButtons都是從CompoundButton擴展而來的。

請注意,如果您從代碼中調用(button).setChecked(boolean),該回調函數也被稱爲!如果您需要設定是否您的按鈕從代碼進行覈對,做這樣的事情:

button.setOnCheckedChangeListener(null); 
button.setChecked(boolean); 
button.setOnCheckedChangeListener(mButtonChangeListener); 
+0

完美。像魅力一樣工作。謝謝。 – JMGoodwin

相關問題