我在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>
答案 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;
}
}
});
}