我有一个带菜单充气器的活动。有两个项目,每个项目都应该打开自己的对话框。但是当我按下一个时,两个对话框都会相互打开。
根据按下的按钮,使用以下两个类别中的一个。这是菜单开关/案例
中的执行行case R.id.action_vote:
VoteDialog.voteDialogShow(this);
case R.id.action_admin:
AdminDialog.adminDialogShow(this);
这是两个对话框类。我删除了一些代码以便于阅读。
public class AdminDialog {
public static void adminDialogShow(final Context context){
final AlertDialog.Builder adminAlert = new AlertDialog.Builder(context);
adminAlert.setTitle("Restricted Area!");
adminAlert.setMessage("Enter Access Code:");
adminAlert.setView(input);
//....
//Setup text and buttons......
//....
adminAlert.show();
}
}
public class VoteDialog {
public static void voteDialogShow(final Context context){
final AlertDialog.Builder voteAlert = new AlertDialog.Builder(context);
//....
//Setup text and buttons......
//....
voteAlert.setView(input);
//....
voteAlert.show();
}
}
答案 0 :(得分:2)
更改为:
case R.id.action_vote:
VoteDialog.voteDialogShow(this);
break;
case R.id.action_admin:
AdminDialog.adminDialogShow(this);
break;
正如Mike M.所指出的那样,您在交换机中的每个案例中都错过了break;
来标记其效果的结束位置。更多详情请见https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html