AlertDialog не отклоняется

Я делаю небольшую игру и пытаюсь показать AlertDialog, проблема в том, что когда пользователь нажимает на опцию, AlertDialog не исчезает.

Я использую петлители, поэтому мой игровой поток останавливается (петля), когда появляется мой AlertDialog, и когда пользователь нажимает «Отмена», игровой поток снова запускается, но диалоговое окно находится сверху, и пользователь не может продолжать играть.

public void alerta(){
    Looper.prepare(); 
    myHandler = new Handler();


    AlertDialog.Builder alertadd = new AlertDialog.Builder(_context);
    LayoutInflater factory = LayoutInflater.from(_context);
    final View view = factory.inflate(R.layout.custom_dialog, null);
    alertadd.setView(view);
    alertadd.setNeutralButton("Tomar Foto", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dlg, int sumthin) {
                stops++;
                Toast.makeText(_context.getApplicationContext(), "Tomaste Foto", Toast.LENGTH_SHORT).show();
            }
        });
    alertadd.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dlg, int sumthin) {
            System.out.println("Stops = "+stops);
            stops++;
            Toast.makeText(_context.getApplicationContext(), "Cancelar", Toast.LENGTH_SHORT).show();
            myHandler.getLooper().quit();
            dlg.dismiss();
        }
    });

    alertadd.show();
    Looper.loop();      

}

person user1364649    schedule 29.04.2012    source источник


Ответы (3)


Не уверен, что это поможет, но попробуй

dlg.cancel();

или взгляните на это. он отлично работает в моем случае:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getString(R.string.a))
    .setCancelable(false)
    .setPositiveButton(getString(R.string.b), new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        MyActivity.this.finish();
    }
})
    .setNegativeButton(getString(R.string.c), new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        dialog.cancel();
    }
});
AlertDialog alert = builder.create();
alert.show();
person Whitewall    schedule 29.04.2012
comment
Я уверен, что это работает, но я думаю, что моя проблема связана с моим петлителем - person user1364649; 30.04.2012

Должно быть alertadd.dismiss();. И НЕ dlg.dismiss();

Попробуй это. Если не дайте знать...

person JibW    schedule 30.04.2012
comment
Не повезло, метод уволить() не определен для типа AlertDialog.Builder - person user1364649; 30.04.2012

Сначала вы должны создать диалоговое окно с предупреждением, а затем использовать его метод отклонения () в методе onClick:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog alert = builder.create();
builder.setMessage(getString(R.string.a))
    .setCancelable(false)
    .setPositiveButton(getString(R.string.b), new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        MyActivity.this.finish();
    }
})
 .setNegativeButton(getString(R.string.c), new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialog, int id) {
    alert.dismiss();
 }
});
alert.show()
person Mohammad Zendedel    schedule 19.04.2015