多个RadioButton,具有一个可选值

时间:2016-04-02 14:25:23

标签: java android

所以我有两个RadioGroups,一个用于性别,一个用于单元类型。用户必须为两个RadioGroup选择值,但第一个选定组的值会影响secont组的值。

例如,如果用户是男性并使用公制单位类型,则会向他显示一个布局。如果他是男性但使用英制单位,则会向他显示另一种布局。

我的问题是,如何在RadioButton onClick方法中使用RadioButton onClick方法?

抱歉,我不知道如何更好地解释这一点。

以下是代码:

public void dialogBodyFatMuskarciRadioButtonKliknut(View view){
            boolean checked = ((RadioButton) view).isChecked();
            switch (view.getId()){
                case R.id.radioButtonDialogBodyFatSpolMuski:
                    if (checked)
                        public void dialogBodyFatRadioMetrickaJedinica(View view){
                    boolean checked = ((RadioButton) view).isChecked();
                    switch (view.getId()){
                        case R.id.radioButtonDialogBodyFatSpolMuski:
                            if (checked)
                }
        }

1 个答案:

答案 0 :(得分:0)

没有测试过这个,但你可以实现这样的逻辑。

在你的宣言中:

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gender_RadioGroup"
    <RadioButton android:id="@+id/male"
        android:text="@string/male"
        android:onClick="onGenderRadioButtonClicked"/>
    <RadioButton android:id="@+id/female"
        android:text="@string/female"
        android:onClick="onGenderRadioButtonClicked"/>
</RadioGroup>

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/unit_type_RadioGroup"
    <RadioButton android:id="@+id/metric_unit_type"
        android:text="@string/metric_unit_type"
        android:onClick="onMetricRadioButtonClicked"/>
    <RadioButton android:id="@+id/imperial_unit_type"
        android:text="@string/imperial_unit_type"
        android:onClick="onMetricRadioButtonClicked"/>
</RadioGroup>

您需要在班级中维护view_genderview_unit_type的View实例。 onCreate是使用findViewById完成它的好地方。

protected void onCreate(Bundle savedInstanceState) {    
    view_gender = (RadioGroup) findViewById(R.id.gender_RadioGroup);
    view_unit_type = (RadioGroup) findViewById(R.id.unit_type_RadioGroup);
}

public void onGenderRadioButtonClicked(View view) {
    if(((RadioButton) view).isChecked())
        chooseLayout(view, view_unit_type );
}

public void onMetricRadioButtonClicked(View view) {
    if(((RadioButton) view).isChecked())
        chooseLayout(view_gender, view);
}

public void chooseLayout(View View1, View View2){
    if (View1.getId()==R.id.male && View2.getId()==R.id.metric_unit_type)
        // show male metric type layout
    else if (View1.getId()==R.id.male && View2.getId()==R.id.imperial_unit_type)
        // show male imperial type layout
    else if (View1.getId()==R.id.female && View2.getId()==R.id.metric_unit_type)
        // show female metric type layout
    else
        // show female imperial type layout
}