Метод showResults - показывает AlertDialog, метод endOfGame - закрывает Aktivity. При показе AlertDialog появляется на пол секунды, и потом исчезает, как оставить его на экране?
private void stopGame() {
showResults();
endOfGame();
}
private void showResults() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.results);
builder.setMessage("Message");
builder.setNegativeButton(R.string.OK, null);
builder.create().show();
}
В метод stopGame() приложение попадает из AsyncTask, возможно где-то здесь ошибка?
private class TimerAsyncTask extends AsyncTask
public TimerAsyncTask(int time) {
this.time = time;
}
@Override
protected Void doInBackground(Void... params) {
while (time > 0) {
SystemClock.sleep(1000);
time--;
publishProgress(time);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
chronometrView.setText(values[0].toString());
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
stopGame();
}
}
Ответ
Присоединюсь к комментарию Abrog Petrovich.
В методе showResults() вы вызываете билдер для создания диалогового окна.
Строчка AlertDialog.Builder builder = new AlertDialog.Builder(this); по сути говорит, что билдер будет использовать данное активити (инфлейтить его, использовать стиль и тд), те вы создаете диалоговое окно относительно данного активити.
Но вы в endOfGame(); я так понимаю закрываете это активити, и закрывается диалог - соответственно. В голову приходят срау два способа решения:
1.Действительно, переместите закрытие Activity те ваш метод endOfGame(); в AlertDialog, пусть срабатывает при его закрытии например, ну или сделайте логику Да/Нет. Дайте пользователю принять выбор.
2.Можете создавать Диалоговое окно в новом Acitivity, или открывать новое Actvity в форме диалогового окна, вариантов здесь много, но нужно видеть что происходит в методе endOfGame().
Комментариев нет:
Отправить комментарий