2014-09-15 4 views
0

Я разрабатываю игру, и во время игрового процесса я хочу, чтобы пользователь не пропустил кнопку «Назад», поэтому, когда нажата кнопка назад, чтобы завершить операцию, появится диалоговое окно предупреждения. что они действительно хотят вернуться. Если они ответят «да», действие завершается, если они отвечают «нет», диалог исчезает, и они могут продолжать игру. Проблема заключается в том, что если они снова касаются кнопки «Назад» или если они выходят из диалогового окна предупреждения, они исчезают, и они могут продолжать играть, но без выполнения кода, который я реализовал в отрицательном ответе, чтобы продолжить игру, поэтому цвет фона кнопки оленьей кожи восстановить первоначальный цвет и countdowntimmer оленьей кожа начинаетзаставить ответить Диалоговое окно оповещения после onBackPressed()

@Override 
    public void onBackPressed() { 

      for (int i = 0; i < 4; ++i) { 
       botones[i].setBackgroundColor(0xff000000); 
      } 
      //storage of variables, nothing to do with the question 
      new AlertDialog.Builder(this) 
        .setIcon(android.R.drawable.ic_dialog_alert) 
        .setTitle(getString(R.string.AlertaSalirPartida)) 
        .setMessage(getString(R.string.AlertaSalirPartidaPregunta)) 
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

          finish(); 
         } 
        }) 
        .setNegativeButton("No", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          for (int i = 0; i < 4; ++i) { 
           botones[i].setBackgroundColor(0xff58d3f7); 
          } 
          //starting a countdowntimer, nothing to do with the question 

         } 
        }) 
        .show(); 

    }  

ответ

0

вы можете сделать свой диалог нерасторгаемым как это:

AlertDialog.Builder builder = new AlertDialog.Builder(Context); 
AlertDialog dialog = builder.create(); 
dialog.setCancelable(false); 
dialog.setCanceledOnOutsideTouch(false); 

Кроме того, вы можете проверить setOnDismissListener и setOnCanceledListener

setCancelable и setCanceledOnOutsideTouch должен сделать невозможным закрытие диалогового окна с отменой, иначе будет вызван один из слушателей.

+0

Спасибо, что сработал, но мне пришлось только поставить '.setCancelable (false)' – pedro

+0

. Добро пожаловать. Если мой ответ помог, подумайте о его повышении – 0xDEADC0DE

+0

У меня нет необходимой репутации ... – pedro