2

我正在制作一个小游戏,我正在尝试显示一个 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();      

}
4

3 回答 3

0

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

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

于 2012-04-30T14:06:35.987 回答
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()
于 2015-04-19T08:12:28.767 回答
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();
于 2012-04-29T20:42:30.643 回答