ome*_*ega 2 android android-switch
在我的 android 应用程序中,我有一个开关小部件,我设置了一个像这样的 oncheckchange 侦听器
main.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
if (no_internet()) {
// cancel click...
return;
}
if (image.getApproved()) {
if (arg1) {
for(FishImage image : imagestoshow) {
image.setIsMain(false);
}
}
image.setIsMain(arg1);
}
}
});
Run Code Online (Sandbox Code Playgroud)
基本上,如果有互联网,我会做一些事情,但如果没有,那么我想取消对交换机的更改。现在,它将改变开关的状态。如果我尝试更改代码中的状态,由于此代码发生在 android 更改状态之前,因此不会产生任何效果。
我需要一种取消开关的方法,所以如果我这样做了,就好像我从未点击过它一样。
我会去setOnClickListener(View.OnClickListener)和赶上onClick(View)回调。toggle()如果您不想通过单击来完成,则只需切换即可。
不要使用onCheckedChanged(CompoundButton, boolean)回调,因为调用toggle()内部会导致无限循环。
例子
main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View clickedView) {
// Cast to get access to Switch methods
Switch switchView = (Switch) clickedView;
if (no_internet()) {
switchView.toggle();
return;
}
if (image.getApproved()) {
if (switchView.isChecked()) {
for(FishImage image : imagestoshow) {
image.setIsMain(false);
}
}
image.setIsMain(switchView.isChecked());
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
884 次 |
| 最近记录: |