2015-08-27 30 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

相关问题