android.widget.Switch – 开/关事件监听器?

我想实现一个开关按钮,android.widget.Switch(可从API v.14中获得)。

 

但我不知道如何添加一个事件监听器的按钮。 它应该是一个“onclick”的听众? 我怎么知道它是否“打开”?

5 Solutions collect form web for “android.widget.Switch – 开/关事件监听器?”

Switchinheritance了CompoundButton的属性,所以我会推荐OnCheckedChangeListener

 mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // do something, the isChecked will be // true if the switch is in the On position } }); 

使用以下片段通过XML将切换添加到您的布局:

  

然后在您的Activity的onCreate方法中,获取对您的Switch的引用并设置其OnCheckedChangeListener:

 Switch onOffSwitch = (Switch) findViewById(R.id.on_off_switch); onOffSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.v("Switch State=", ""+isChecked); } }); 

定义你的XML布局:

    

然后创建一个活动

 public class SwitchActivity extends ActionBarActivity implements CompoundButton.OnCheckedChangeListener { Switch mySwitch = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_switch); mySwitch = (Switch) findViewById(R.id.myswitch); mySwitch.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { // do something when check is selected } else { //do something when unchecked } } **** } 

========对于下面的API 14使用SwitchCompat =========

XML

    

活动

 public class SwitchActivity extends ActionBarActivity implements CompoundButton.OnCheckedChangeListener { SwitchCompat mySwitch = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_switch); mySwitch = (SwitchCompat) findViewById(R.id.myswitch); mySwitch.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { // do something when checked is selected } else { //do something when unchecked } } ***** } 

Switch widget的布局是这样的。

    

在Activity类中,可以通过两种方式进行编码。 取决于你使用的代码。

第一条路

 public class ActivityClass extends Activity implements CompoundButton.OnCheckedChangeListener { Switch list_toggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.return_vehicle); list_toggle=(Switch)findViewById(R.id.list_toggle); list_toggle.setOnCheckedChangeListener(this); } } public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { if(isChecked) { list_toggle.setText("Only Today's"); //To change the text near to switch Log.d("You are :", "Checked"); } else { list_toggle.setText("All List"); //To change the text near to switch Log.d("You are :", " Not Checked"); } } 

第二种方式

 public class ActivityClass extends Activity { Switch list_toggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.return_vehicle); list_toggle=(Switch)findViewById(R.id.list_toggle); list_toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) { list_toggle.setText("Only Today's"); //To change the text near to switch Log.d("You are :", "Checked"); } else { list_toggle.setText("All List"); //To change the text near to switch Log.d("You are :", " Not Checked"); } } }); } } 

对于那些使用Kotlin的用户,可以为交换机设置一个监听器(在这种情况下,具有ID mySwitch ),如下所示:

 mySwitch.setOnCheckedChangeListener { _, isChecked -> run { // do whatever you need to do when the switch is toggled here } } 

如果当前选中开关(ON),则isChecked为true,否则为false。

  • Android studio 3稳定版“房间1(RC)”的“app:kaptDebugKotlin”错误
  • 在可能为空的接收器types的数组列表中,只允许安全或非空的确定的呼叫
  • 使用Kotlin Anko拍摄照片并显示结果的最佳方法是什么?
  • Kotlin文件读取,使用块没有捕获所有的例外
  • Kotlin懒惰的默认属性
  • Array上的函数average()不起作用
  • 在lateinit声明后variables不更新,无法返回
  • 我可以在Room持久性中使用两个实体的一个模型吗?
  • 代码A和代码B在Kotlin有什么不同?
  • Android:自定义字体文字周围的垂直空间
  • Gson Map to Object
  • Kotlin language will be the best programming language for Android.