【问题标题】:android CheckBox how to deferentiate between user click and setCheckedandroid CheckBox如何区分用户点击和setChecked
【发布时间】:2013-03-26 02:04:06
【问题描述】:

我在我的应用程序中使用复选框作为打开或关闭某项功能的按钮。但是操作(从网络加载文件)是在异步任务中完成的,所以我不希望在异步任务成功完成之前进行检查,就像这样

protected void onPostExecute(String result) {

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

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

有没有办法避免这种情况?或者至少在onCheckedChanged 中检测到它?

谢谢

【问题讨论】:

  • 点击此链接将解决您的问题stackoverflow.com/questions/9129858/…
  • 我猜你每次用户打开复选框时都会执行一项任务。在我的脑海中,我会说使用标志来区分用户操作和设置复选框状态的时间。
  • 感谢 steveoo,效果很好,现在我在 onCheckedChanged 开始时检查 isPressed(),如果为 false,我知道这不是用户点击。你为什么不回答?

标签: android checkbox


【解决方案1】:

您可以使用按钮视图对象的isPressed() 方法。这是 Android 中切换按钮的示例。 buttonView.isPressed() 仅在用户单击按钮时为真。

@Override
public synchronized void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

    if (buttonView.isPressed()) {
        // human input  
    } else {
        // result of setChecked(boolean)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2019-10-09
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多