AlertDialog没有解雇

时间:2012-04-29 20:33:20

标签: android alertdialog dismiss

我正在制作一款小游戏而且我试图展示一个AlertDialog,问题是,当用户点击一个选项时,AlertDialog不会消失。

我使用loopers所以当我的AlertDialog出现时以及用户点击&#34时取消"我的游戏线程停止(looper)游戏线程再次运行,但对话框在顶部,用户无法保持播放。

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();      

}

3 个答案:

答案 0 :(得分:0)

不确定它是否会有所帮助,但请尝试

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();

答案 1 :(得分:0)

应该是alertadd.dismiss();。而不是dlg.dismiss();

试试吧。如果不让我知道......

答案 2 :(得分:0)

您必须先创建警告对话框,然后在onClick方法中使用它的dismiss()方法:

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()