【发布时间】:2015-02-20 07:03:50
【问题描述】:
我正在尝试设计一个应用,其中包含一个复选框列表,后跟单选组(每个包含 4 个单选按钮)。
概念是,在我们选择特定复选框之前,它的相关无线电组应该被禁用。我尝试了
提供的所有解决方案How to disable a RadioGroup until checkbox is checked
Android: How do I enable/disable a Checkbox, depending on a Radio button being selected first
Android disable radio group in xml
http://developer.android.com/reference/android/widget/RadioGroup.html 但它们都不适合我..应用程序崩溃了..
这是我的代码:
public class Service extends Activity
{
private String op1=" ",op2=" ";
private CheckBox ck1;
private CheckBox ck2;
private RadioGroup rg1;
private RadioGroup rg2;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_service);
ck1 = (CheckBox)findViewById(R.id.checkBox1);
ck2 = (CheckBox)findViewById(R.id.checkBox2);
RadioGroup rg1 = (RadioGroup) findViewById(R.id.radioGroup1);
RadioGroup rg2 = (RadioGroup) findViewById(R.id.radioGroup2);
rg1.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.radio1:
op1="Normal";
break;
case R.id.radio2:
op1="Extra";
break;
}
}
});
rg2.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.radio3:
op2="Normal";
break;
case R.id.radio4:
op2="Extra";
break;
}
}
});
}
public void onCheckboxClicked(View view)
{
ck1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton checkBox, boolean isChecked)
{
RadioGroup rg1 = (RadioGroup) findViewById(R.id.radioGroup1);
for(int i = 0; i < rg1.getChildCount(); i++)
{
((RadioGroup)rg1.getChildAt(i)).setEnabled(isChecked);
}
}
});
for(int i = 0; i < rg1.getChildCount(); i++)
{
((RadioGroup)rg1.getChildAt(i)).setEnabled(false);
}
}
ck2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton checkBox, boolean isChecked)
{
RadioGroup rg2 = (RadioGroup) findViewById(R.id.radioGroup2);
for(int i = 0; i < rg2.getChildCount(); i++)
{
((RadioGroup)rg2.getChildAt(i)).setEnabled(isChecked);
}
}
});
for(int i = 0; i < rg2.getChildCount(); i++)
{
((RadioGroup)rg2.getChildAt(i)).setEnabled(false);
}
}
}
.xml 代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onCheckboxClicked"
android:text="@string/Cheese" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2" >
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/Normal />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/Extra />
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onCheckboxClicked"
android:text="@string/Ketchup" />
<RadioGroup
android:id="@+id/radioGroup2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2" >
<RadioButton
android:id="@+id/radio3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/Normal />
<RadioButton
android:id="@+id/radio4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/Extra />
</RadioGroup>
</LinearLayout>
如果再次取消选中复选框,则删除单选按钮
if(isChecked) //in switch-case
//task
else
radiogroup.clearCheck();
【问题讨论】:
-
请格式化您的代码。它不可能读这个!
-
对不起..它不接受代码..给出错误..比如添加 4 个空格,ese cntrl+k 和所有
-
实际上这是我的第一个问题。所以,在给出代码时遇到问题......它显示了一些规则
-
有人编辑了该问题,请接受该编辑。
-
首先,我建议你更改Activity的名称。服务是 Android 的构建块。不要将其用作活动的名称。
标签: android eclipse checkbox radio-group