android CheckBox如何区分用户点击和setChecked

时间:2013-04-04 06:09:58

标签: android checkbox

我在我的应用程序中使用一个复选框作为按钮打开或关闭某些内容。但是操作(从网络加载文件)是在异步任务中完成的,因此我不希望检查在异步任务成功完成之前启用,如下所示

protected void onPostExecute(String result) {

            if(result==null) {
                return;
            }
            // loaded ok, turn on check mark
            MainActivity.mMp3Cb.setChecked(true);

问题是,setChecked(true)导致OnCheckedChangeListener再次触发,就好像它是用户输入一样

有没有办法避免这种情况?或至少在onCheckedChanged

中检测到它

感谢

1 个答案:

答案 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)
    }
}