我在我的应用程序中使用一个复选框作为按钮打开或关闭某些内容。但是操作(从网络加载文件)是在异步任务中完成的,因此我不希望检查在异步任务成功完成之前启用,如下所示
protected void onPostExecute(String result) {
if(result==null) {
return;
}
// loaded ok, turn on check mark
MainActivity.mMp3Cb.setChecked(true);
问题是,setChecked(true)
导致OnCheckedChangeListener
再次触发,就好像它是用户输入一样
有没有办法避免这种情况?或至少在onCheckedChanged
?
感谢
答案 0 :(得分:12)
您可以使用按钮视图对象的isPressed()
方法。以下是Android中切换按钮的示例。 buttonView.isPressed()
仅在用户点击按钮时才为真。
@Override
public synchronized void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.isPressed()) {
// human input
} else {
// result of setChecked(boolean)
}
}