如何在Android中启用或禁用checkbox

我有我的quickalert对话框4checkbox…我想要的是,当我检查[启用] 1checkbox其他3checkbox必须得到禁用..我做他们点击,但没有禁用。 我不知道该怎么做。

这是我正在寻找的:

小样

checkmrn = (CheckBox) container.findViewById(R.id.MrnCheckBox); checkmrn.setText("By Mrn"); checkmrn.setEnabled(false); checkdate = (CheckBox) container.findViewById(R.id.dateCheckBox); checkdate.setText("By Date"); checkname = (CheckBox) container.findViewById(R.id.nameCheckBox); checkname.setText("By Name"); checklocation = (CheckBox) container.findViewById(R.id.locationCheckBox); checklocation.setText("By Location"); okButton = (Button) container.findViewById(R.id.okButton); okButton.setText("Ok"); checkmrn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { Toast.makeText(mContext, "By Mrn", Toast.LENGTH_SHORT).show(); } } }); checkdate.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { Toast.makeText(mContext, "By Date", Toast.LENGTH_SHORT).show(); } } }); checkname.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { Toast.makeText(mContext, "By Name", Toast.LENGTH_SHORT).show(); } } }); checklocation.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { Toast.makeText(mContext, "By Location", Toast.LENGTH_SHORT).show(); } } }); 

看到这个链接: http : //www.mrsaqib.com/2011/12/allow-single-selection-on-android-checkbox/

这是上述问题的工作代码。

  checkmrn = (CheckBox) container.findViewById(R.id.MrnCheckBox); checkmrn.setText("By Mrn"); checkdate = (CheckBox) container.findViewById(R.id.dateCheckBox); checkdate.setText("By Date"); checkname = (CheckBox) container.findViewById(R.id.nameCheckBox); checkname.setText("By Name"); checklocation = (CheckBox) container.findViewById(R.id.locationCheckBox); checklocation.setText("By Location"); okButton = (Button) container.findViewById(R.id.okButton); okButton.setText("Ok"); checkmrn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { checkmrn.setChecked(true); Toast.makeText(mContext, "By Mrn", Toast.LENGTH_SHORT).show(); checkdate.setChecked(false); checkname.setChecked(false); checklocation.setChecked(false); } } }); checkdate.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { checkdate.setChecked(true); Toast.makeText(mContext, "By Date", Toast.LENGTH_SHORT).show(); checkmrn.setChecked(false); checkname.setChecked(false); checklocation.setChecked(false); } } }); checkname.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { checkname.setChecked(true); Toast.makeText(mContext, "By Name", Toast.LENGTH_SHORT).show(); checkmrn.setChecked(false); checkdate.setChecked(false); checklocation.setChecked(false); } } }); checklocation.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { checklocation.setChecked(true); Toast.makeText(mContext, "By Location", Toast.LENGTH_SHORT).show(); checkmrn.setChecked(false); checkname.setChecked(false); checkdate.setChecked(false); } } }); checkmrn = (CheckBox) container.findViewById(R.id.MrnCheckBox); checkmrn.setText("By Mrn"); checkdate = (CheckBox) container.findViewById(R.id.dateCheckBox); checkdate.setText("By Date"); checkname = (CheckBox) container.findViewById(R.id.nameCheckBox); checkname.setText("By Name"); checklocation = (CheckBox) container.findViewById(R.id.locationCheckBox); checklocation.setText("By Location"); okButton = (Button) container.findViewById(R.id.okButton); okButton.setText("Ok"); checkmrn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { checkmrn.setChecked(true); Toast.makeText(mContext, "By Mrn", Toast.LENGTH_SHORT).show(); checkdate.setChecked(false); checkname.setChecked(false); checklocation.setChecked(false); } } }); checkdate.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { checkdate.setChecked(true); Toast.makeText(mContext, "By Date", Toast.LENGTH_SHORT).show(); checkmrn.setChecked(false); checkname.setChecked(false); checklocation.setChecked(false); } } }); checkname.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { checkname.setChecked(true); Toast.makeText(mContext, "By Name", Toast.LENGTH_SHORT).show(); checkmrn.setChecked(false); checkdate.setChecked(false); checklocation.setChecked(false); } } }); checklocation.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { checklocation.setChecked(true); Toast.makeText(mContext, "By Location", Toast.LENGTH_SHORT).show(); checkmrn.setChecked(false); checkname.setChecked(false); checkdate.setChecked(false); } } }); 

在RadioGroup中使用RadioButton! 这是你想要的!

如果您想在选择其他选项时禁用其他选项,请创建禁用/启用方法

 protected void setGroupState(boolean state) { //here put all options to have state changed in one go } 

然后在应该改变“组”的选项的点击处理程序中,

用适当的状态调用它。 例如setGroupState(false);

最好的祝福

当点击checkbox时,您可以使其他checkbox为false,并且当前为真

  if (((CheckBox) v).isChecked()) { currentchk.setChecked(true); otherchkbox.setChecked(false); } 

尝试像这样:

 private OnCheckedChangeListener listener = new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton arg0, boolean isChecked) { if(isChecked){ switch(arg0.getId()) { case R.id.firstCheckBox: firstCheckBox.setChecked(true); secondCheckBox.setChecked(false); thirdCheckBox.setChecked(false); break; case R.id.secondCheckBox: firstCheckBox.setChecked(false); secondCheckBox.setChecked(true); thirdCheckBox.setChecked(false); break; case R.id.thirdCheckBox: firstCheckBox.setChecked(false); secondCheckBox.setChecked(false); thirdCheckBox.setChecked(true); break; } } } }; 
 Well, you can use the property of the checkBox which is setClickable Following is a simple example code which let a checkbox be disabled: CheckBox check_1; check_1 = (CheckBoX)findViewById(R.id.(the id of your checkbox in xml)); check_1.setClickable(false); //then this checkbox will be disabled. Hope this will help you. 

当你点击其他布局或按钮等,你可以添加此行代码 – >

  1. Kotlin: yourCheckbox.isChecked = !yourCheckbox.isChecked

  2. Java中: yourCheckbox.setChecked() = !yourCheckbox.isChecked()

希望这可以帮助你:)