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

最初に警告ダイアログを作成してから、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 に答える
0

である必要がありますalertadd.dismiss();。そして、そうではありませんdlg.dismiss();

それを試してみてください。そうでない場合は、私に知らせてください...

于 2012-04-30T14:06:35.987 に答える