Android:如何启用/禁用复选框,具体取决于首先选择的单选按钮

基本上我有一个带有两个单选按钮的Radio Group,其中一个标记为RUN,另一个标记为PASS。 就在这下面,我还有一个标有“Pass Complete”的复选框

问:选择RUN单选按钮时如何禁用复选框(因此无法选中复选框)并在选择PASS单选按钮时启用它? 任何帮助构建某种类型的IF语句将非常感激。

XML

        

JAVA

 package com.aces.acesfootballuk; import android.app.Activity; import android.os.Bundle; public class CoachesPage extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.coachespage); } }; 

我已经设法用更多的研究来回答我的问题,也可以帮助其他人……

 private void initialize() { // TODO Auto-generated method stub RadioGroup1 = (RadioGroup) findViewById(R.id.runandpass); Radio1 = (RadioButton) findViewById(R.id.radiobuttonrun); Radio2 = (RadioButton) findViewById(R.id.radiobuttonpass); checkBoxcmpltpass = (CheckBox) findViewById(R.id.checkBoxcmpltpass); RadioGroup1.setOnCheckedChangeListener(this); } public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub switch(checkedId){ case R.id.radiobuttonrun: checkBoxcmpltpass.setEnabled(false); break; case R.id.radiobuttonpass: checkBoxcmpltpass.setEnabled(true); break; } } 

尝试这个 :

  mRadioGroup1 = (RadioGroup) findViewById(R.id.runandpass); mRadio1 = (RadioButton) findViewById(R.id.radiobuttonrun); mRadio2 = (RadioButton) findViewById(R.id.radiobuttonpass); mcheckBoxcmpltpass= (RadioButton) findViewById(R.id.checkBoxcmpltpass); /*RadioGroup?OnCheckedChangeListener???*/ mRadioGroup1.setOnCheckedChangeListener(mChangeRadio); } private RadioGroup.OnCheckedChangeListener mChangeRadio = new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub if(checkedId==mRadio1.getId()) { /*?mRadio1*/ mcheckBoxcmpltpass.disabled=false; } else if (checkedId==mRadio2.getId()) { /*?mRadio2*/ mcheckBoxcmpltpass.disabled=true; } } }; 

使用Radiogroup.setOnCheckedChangeListener,然后在选中的更改时使用checkbox.setenable

您可能希望在复选框中添加一个侦听器,它将检查选择并根据需要更新其他视图。

  captureGrp = (RadioGroup) findViewById(R.id.runandpass); myRadio1 = (RadioButton) findViewById(R.drawable.radio1); myRadio2 = (RadioButton) findViewById(R.drawable.radio2); myRadio3 = (RadioButton) findViewById(R.drawable.radio3); captureGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.radio1) { //disable and enable as needed } else if (checkedId == R.id.radio2) { // disable as needed } else { // add as many as you need } } 

试试这个

  final CheckBox cl_chk = (CheckBox) view.findViewById(R.id.cl_chk); cl_chk.setEnabled(false); 

这将帮助你…