带有DialogInterface的嵌套开关

时间:2018-07-10 07:11:39

标签: java android

我正在制作具有多种选择的叙事游戏,所以我必须使用嵌套开关。

我正在使用一个单选对话框对话框,我想做这样的事情:

switch(i){
case 0: response1;
           switch(i){ 
                     case 0: response 2
                    switch(i){
                                case 0: response 3
                              }
                      }
}

但是问题是切换键(i),第一次切换后我不知道如何更改它:/

这是我的代码:

listChoices = new String[]{"Answer1,answer2,answer3"};

    Button btn = (Button) findViewById(R.id.btnChoice);
    btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Text to choose

            AlertDialog.Builder mBuilder= new AlertDialog.Builder(ChapTest.this);
            mBuilder.setTitle("Your choice:");

            mBuilder.setSingleChoiceItems(listChoices, -1, new DialogInterface.OnClickListener() {
                @Override

                public void onClick(DialogInterface dialogInterface,int i) {
                //fonction list text
                    userInput.setText(listChoices[i]);

                          // Fonction message
                            ResponseMessage message = new ResponseMessage(userInput.getText().toString(), 1);
                            responseMessageList.add(message);


                    switch (i) {
                        case 0:
                            ResponseMessage message2 = new ResponseMessage("Désolé " + prenom + ", tu tiens le coup?", 2);
                            responseMessageList.add(message2);

                            listChoices = new String[]{"answer4,answer5,answer6 "};

                            switch (i) {
                                case 0:
                                    ResponseMessage message6 = new ResponseMessage("Test", 2);
                                    responseMessageList.add(message6);
                                    break;
                            }

                            break;

2 个答案:

答案 0 :(得分:0)

在您的代码中,您永远不会在第二个“ list Choices = new ...”之后重新分配“ i”变量,因此执行“ switch(i)”绝对没有用,因为您处于先前的“情况0: ...”的“ i”,因此该变量在所有情况下都保持不变。

如果您知道嵌套事物的“堆栈”有多深,则可以使用“ i”以外的其他变量名称,例如“ j”,“ k”等...

listChoices = new.... 
mBuilder.setSingleChoiceItems(listChoices, -1, new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialogInterface, int i) {
       ...use "i"...
       list Choices = new...
       mBuilder.setSingleChoiceItems(listChoices, -1, new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialogInterface, int j) {
     ...use "j"... 
  } 
   }

答案 1 :(得分:0)

                    switch (i) {
                        case 0:
                            ResponseMessage message2 = new ResponseMessage("Désolé " + prenom + ", tu tiens le coup?", 2);
                            responseMessageList.add(message2);

                            listChoices = new String[]{"Non j'ai pas envie de le perdre", "J'ai envie qu'il revienne Papa "};

                            mBuilder.setSingleChoiceItems(listChoices, -1, new DialogInterface.OnClickListener() {
                @Override

                public void onClick(DialogInterface dialogInterface,int j) {

                            switch (i) {
                                case 0:
                                    ResponseMessage message6 = new ResponseMessage("Test", 2);
                                    responseMessageList.add(message6);
                                    break;
                            }
}

类似的东西吗?