Android

时间:2016-08-15 20:17:27

标签: android radio-button

我在Android Studio中编写第一个应用程序。用户应选择训练类型(肌肉增加,减肥,自己的程序),然后选择性别(男/女)。那么,6个可能的结果和2个相应的无线电组。选择必要的选项后,用户点击确认按钮并进入必要的培训类型屏幕(使用6个addListeneronbutton方法之一)。但app在安装后没有反应。 你能告诉我我做错了吗?

public void onRadioButtonClicked(View view) {
    switch (view.getId()) {
        case R.id.Muscles:
                switch (view.getId()){
                    case R.id.Male:
                        addListenerOnButton();
                    case R.id.Female:
                        addListenerOnButton2();
                }
                break;
        case R.id.Diet:
            switch (view.getId()){
                case R.id.Male:
                    addListenerOnButton3();
                case R.id.Female:
                    addListenerOnButton4();
            }
            break;
        case R.id.Own:
            switch (view.getId()){
                case R.id.Male:
                    addListenerOnButton3();
                case R.id.Female:
                    addListenerOnButton4();
            }
            break;
    }
}

相应的xml文件具有以下用于选择性别的代码:

<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:id="@+id/radioGroup">
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/Male"
        android:text="Male"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:id="@+id/Female"
        android:text="Female"
        android:onclick="onRadioButtonClicked"/>
</RadioGroup>

在同一个xml第二个广播组中选择培训类型:

    <TableRow
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/radioGroup2">
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:id="@+id/Muscles"
            android:text="@string/Muscles"
            android:onClick="onRadioButtonClicked"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/Diet"
            android:text="@string/Fat"
            android:onClick="onRadioButtonClicked"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/Own"
            android:text="@string/Own"
            android:onClick="onRadioButtonClicked"/>
    </RadioGroup>

2 个答案:

答案 0 :(得分:0)

你所做的远比必要复杂得多。你需要的是两个独立的无线电组。单击每个单选按钮时,不应该执行代码,而应该在按钮上显示事件。

当用户点击按钮时,应检查是否已检查两个字段,然后在下一个屏幕上传递这两个值。然后你将处理解释用户输入。

所以,解决方案很简单。

答案 1 :(得分:0)

public int onRadioButtonClicked (View view){
    return view.getId();
}

public int onRadioButtonClicked2 (View view2){
    return view2.getId();
}

然后,我不知道如何比这样的嵌套语句更简单:

Button button;


public void addListenerOnButton() {
    final Context context = this;
    button = (Button) findViewById(R.id.button5);

    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            switch(onRadioButtonClicked2(arg0)) {
                case R.id.Muscles:
                    switch (onRadioButtonClicked(arg0)) {
                        case R.id.Male:
                            Intent intent1 = new Intent(context, MaleMuscules.class);
                            startActivity(intent1);
                            break;
                        case R.id.Female:
                            Intent intent2 = new Intent(context, FemaleMuscules.class);
                            startActivity(intent2);
                            break;
                    }
                    break;
                case R.id.Diet:
                    switch (onRadioButtonClicked(arg0)) {
                        case R.id.Male:
                            Intent intent3 = new Intent(context, MaleLoss.class);
                            startActivity(intent3);
                            break;
                        case R.id.Female:
                            Intent intent4 = new Intent(context, FemaleLoss.class);
                            startActivity(intent4);
                            break;
                    }
                    break;
                case R.id.Own:
                    switch (onRadioButtonClicked(arg0))
                    {
                        case R.id.Male:
                            Intent intent5 = new Intent(context, MaleOwn.class);
                            startActivity(intent5);
                            break;
                        case R.id.Female:
                            Intent intent6 = new Intent(context, FemaleOwn.class);
                            startActivity(intent6);
                            break;
                    }
                  break;
            }
        }

    });

}