2014-06-12 5 views
1

Так что я хочу спросить у пользователя свое имя, прежде чем продолжить сборку активности. Большая часть активности заполняется динамически, поэтому кажется, что это должно быть легко. По какой-то причине Диалог никогда не появляется. Я пробовал все, и единственное, что я могу придумать: возможно, ему не нравится быть в методе onCreate? Кажется, это не должно быть проблемой, хотя, поскольку это буквально последний метод, вызываемый в onCreate. Проверьте его и дайте мне знать, что вы видите:AlertDialog не будет отображаться в методе onCreate

OnCreate метод:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    initializeHotels(); 
    FIRST_TURN = true; 

    clearOldBoard(); 
    setContentView(R.layout.activity_game_board); 
    setUpBoardGUI(); 

    setOnPlayerSetUpEventListener(new onPlayerSetUpEventListener() { 
     @Override 
     public void onPlayerSetUp(){ 
      prepForFirstTurn(); 
     } 
    }); 

    startGameDialog(); 
} 

И метод startGameDialog:

public void startGameDialog(){ 
    Context context = getApplicationContext(); 

    ContextThemeWrapper ctw = new ContextThemeWrapper(context, R.style.AppBaseTheme); 

    AlertDialog.Builder startGameDialog = new AlertDialog.Builder(ctw); 
    startGameDialog.setTitle(getResources().getString(R.string.whats_your_name)); 

    LinearLayout dialogLayout = new LinearLayout(context); 

     final EditText newName = new EditText(context); 
     newName.setText(""); 

     Button submit = new Button(context); 
     OnClickListener onClick = new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       GameBoardActivity.NAME = newName.toString(); 
       setUpPlayers(); 

      } 
     }; 
     submit.setOnClickListener(onClick); 

    dialogLayout.addView(newName); 
    dialogLayout.addView(submit); 

    startGameDialog.setView(dialogLayout); 
    Dialog dialog = startGameDialog.create(); 
    dialog.show(); 
    dialog.setCancelable(false); 

} 

ответ

2

Метод create возвращает экземпляр AlertDialog

Вместо инициализации Диалоговое при вызове создать метод AlertDialog

Dialog dialog = startGameDialog.create(); 
dialog.show(); 

передать его AlertDialog

AlertDialog alertDialog = startGameDialog.create(); 
alertDialog.show(); 

использовать контекст токи активности, а не использовать все приложения contex.t

Context context = Your_activity.this; 
+0

Сожалею. Это «нет». Тем более, что я использую тот же код для других диалогов в других местах программы, и он выполняется безупречно. (Пробовал в любом случае, и он не работает). –

+0

@JRadtheBad работает? но он не работает в вашей текущей деятельности? –

+0

«AlertDialog», который не отображается, - это код, который вы видите выше. В другом месте программы я использую почти тот же самый код, и диалоговые окна отображаются хорошо. Только в этой конкретной ситуации диалог не отображается. –

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