【问题标题】:How to uncheck a checked Android Checkbox如何取消选中已选中的 Android 复选框
【发布时间】:2012-10-19 10:56:52
【问题描述】:

我的 android 应用中有两个单选按钮和 5 个复选框。还有一个保存按钮。 当用户单击保存按钮时,我需要取消选中用户选中的复选框。我已尝试使用以下代码。但它不起作用。

if (chkOthers.isChecked()) 
    chkOthers.setChecked(false);
    chkOthers.setSelected(false);
}

【问题讨论】:

  • 那个sn-p的上下文是什么?太短了,没用。
  • 这样做,if(chkOthers.isChecked()) { chkOthers.performClick();这会在checkbox上执行正常的点击操作,也会执行onClickListener(),所以要明智地使用它

标签: android checkbox


【解决方案1】:

只需使用 chk1.toggle() onClick 按钮取消选中已选中的。

public class TestCheckBoxActivity extends Activity {
  /** Called when the activity is first created. */
     CheckBox chk1, chk2;

        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        chk1 = (CheckBox)findViewById(R.id.checkBox1);
        chk2 = (CheckBox)findViewById(R.id.checkBox2);

        Button btn = (Button)findViewById(R.id.button1);

        btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if(chk1.isChecked()){
                chk1.toggle();
            }

            if(chk2.isChecked()){
                chk2.toggle();
            }

        }
    });
       }
}

【讨论】:

    【解决方案2】:

    如果你想为此使用复选框,你可以在两个复选框上设置一个 onItemClickListener 并且需要在 onItemClick() 方法中取消选择其他。一个例子是这样的:-

    CheckBox cb1,cb2;
    //Considering you can initialize the above variables
    cb1.setOnCheckedChangeListener(new OnCheckedChangeListener{
        onCheckedChanged (CompoundButton view, boolean isChecked){
            cb2.setChecked(false);
        }
    });
    cb2.setOnCheckedChangeListener(new OnCheckedChangeListener{
        onCheckedChanged (CompoundButton view, boolean isChecked){
            cb1.setChecked(false);
        }
    });
    

    我建议您应该为此行为使用单选按钮,因为它们从一开始就内置了此功能。

    【讨论】:

      【解决方案3】:
         holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                  @Override
                  public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                     if(holder.checkBox.isChecked()) {
                         holder.checkBox.setChecked(false);
                     }else {
                         holder.checkBox.setChecked(true);
                     }
                  }
              });
      

      【讨论】:

        【解决方案4】:
        Button b = findViewById(R.id.{yourButtonID});
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                chk1.setChecked(false);
                chk2.setChecked(false);
                chk3.setChecked(false);
                chk4.setChecked(false);
                chk5.setChecked(false);
            }
        });
        

        【讨论】:

          猜你喜欢
          • 2016-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-02
          • 2011-02-27
          • 1970-01-01
          • 2020-03-16
          • 2019-04-18
          相关资源
          最近更新 更多