setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// How to check whether the checkbox/switch has been checked
// by user or it has been checked programatically ?
if (isNotSetByUser())
return;
handleSetbyUser();
}
});
Run Code Online (Sandbox Code Playgroud)
如何实现方法isNotSetByUser()?
我在我的应用程序中有一个包含许多开关的设置活动.我试图避免编写50个setOnCheckedChangeListener我试图在布局文件中设置onClick事件:
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/switchVibra"
android:layout_weight="0.1"
android:onClick="switchChange" />
Run Code Online (Sandbox Code Playgroud)
方法:
public void switchChange(View v){
switch (v.getId()){
case R.id.switchVibra:
// Do something
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当您擦除开关时,此方法不会注册更改.还有其他选项可以避免为每个开关编写一个监听器吗?