Alertdialog остается в живых после клика - PullRequest
1 голос
/ 16 июня 2011

В моей программе есть странная ошибка, которую я могу объяснить только одним способом.

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

Дело в том, что, когда пользователь выходит из этого действия и, таким образом, возвращается к действиям меню, диалоговое окно, кажется, все еще открыто. Дело в том, что это происходит не каждый раз.

Я не включил dismiss () в мой код, но был уверен, что это происходит автоматически.

            AlertDialog alertDialog = new AlertDialog.Builder(YanivMenuActivity.this).create();
            alertDialog.setTitle("Active Game");
            alertDialog.setMessage("You are in the middle of a game.\nStarting a new game will cancel that one.\nHow do you wish continue?");
            alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Start New Game", 
                      new DialogInterface.OnClickListener(){
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                            inGame = false;
                            startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", true));
                        }
                      });

            alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Continue Old Game", 
                      new DialogInterface.OnClickListener(){
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                            startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", false));
                        }
                      });
            alertDialog.show();

Ответы [ 4 ]

3 голосов
/ 16 июня 2011

Пожалуйста, проверьте ниже код

 AlertDialog alertDialog = new AlertDialog.Builder(YanivMenuActivity.this).create();
        alertDialog.setTitle("Active Game");
        alertDialog.setMessage("You are in the middle of a game.\nStarting a new game will cancel that one.\nHow do you wish continue?");
        alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Start New Game", 
                  new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
                        inGame = false;
                       dismiss();
                        startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", true));
                    }
                  });

        alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Continue Old Game", 
                  new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
                       dismiss();
                        startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", false));
                    }
                  });
        alertDialog.show();
3 голосов
/ 16 июня 2011

Вы почти ответили на свой вопрос.Вам нужно , чтобы позвонить dismiss() непосредственно перед вашим startActivity(...); звонком.

2 голосов
/ 16 июня 2011

Перед вызовом начала активности вы должны отменить диалог:

public void onClick(DialogInterface arg0, int arg1) {
alertDialog.cancel();
startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", false));
                        }
0 голосов
/ 16 июня 2011
alertbox.cancel();

Это то, что вы должны делать, когда хотите закрыть окно оповещения.Не забудьте заменить alertbox на имя вашего alertbox.

...