2015-09-24 2 views
4

Я пытаюсь сделать AlertDialog внутри AlertDialog, но когда я запускаю код, то secound AlertDialog вратаря появляютсяAlertDialog внутри AlertDialog

Это мой код, я хочу, чтобы это сделать, как если пользователь нажимает отменить в сначала появится AlertDialog, появится второй AlertDialog, пользователь может набрать его имя и оба балла, и имя перейдет к ScoreActivity, используя intern.

void generateAlertDialog(final long timeSpent) { 
     // 1. Instantiate an AlertDialog.Builder with its constructor 
     AlertDialog.Builder builder = new AlertDialog.Builder(
       GameActivity.this); 
     // 2. Chain together various setter methods to set the dialog 
     // characteristics 
     builder.setMessage(
       "The time stayed in the game is " + timeSpent + "s") 
       .setTitle("You Lose!!") 
       .setPositiveButton("Replay", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
               int id) { 
           // User clicked OK button 
           finish(); 
           Intent intent = new Intent(getApplicationContext(), GameActivity.class); 
           startActivity(intent); 
          } 
         }) 
       .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
               int id) { 
           AlertDialog.Builder builder2 = new AlertDialog.Builder(
             GameActivity.this); 
           builder2.setMessage(
             "Please input you name") 
             .setTitle("Score"); 
           final EditText input = new EditText(GameActivity.this); 
           input.setInputType(InputType.TYPE_CLASS_TEXT); 
           builder2.setView(input); 
           builder2.setPositiveButton("Show Score LIst", 
             new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface dialog, 
                   int id) { 
               finish(); 
               Intent intent = new Intent(getApplicationContext(), ScoreActivity.class); 
               m_Text = input.getText().toString(); 
               intent.putExtra("name", m_Text); 
               intent.putExtra("result", timeSpent); 
               startActivity(intent); 

              } 
             }); 
           builder2.setNegativeButton("Cancel", 
             new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface dialog, 
                   int id) { 
               finish(); 
               Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
               startActivity(intent); 

              } 
             }); 

           // User cancelled the dialog 

          } 
         }); 

     // 3. Get the AlertDialogfrom create() 
     AlertDialog dialog = builder.create(); 

     // 4. Show dialog 
     dialog.show(); 
    } 
+0

Вы пытаетесь изменить 'AlertDialog.Builder builder2 = new AlertDialog.Builder ( GameActivity.this);' to' AlertDialog.Builder builder2 = new AlertDialog.Builder (this); ' –

ответ

4

Вы никогда не называйте builder2.create() или show() метод любых builder2.create() возвращается. Вам нужно сделать обе эти вещи прямо там, где у вас есть комментарий «// Пользователь отменил диалог».

Смежные вопросы