1

私はダイアログを表示していますが、戻るボタンが押されたときに、キャンセルが有効になる前にダイアログをキャンセルしたいという確認をユーザーに求めたいと思っています。これが私のコードです:

dialog.setOnCancelListener(new OnCancelListener(){

            @Override
            public void onCancel(DialogInterface arg0) {
                AlertDialog.Builder builder = new AlertDialog.Builder(dialog.getContext());
                builder.setMessage( "Are you sure you want to cancel?")
                       .setCancelable(false)
                       .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface diag, int id) {
                               diag.dismiss();
                               dialog.dismiss();

                           }
                       })
                       .setNegativeButton("No", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface diag, int id) {
                                diag.cancel();
                           }
                       });
                AlertDialog alert = builder.create();
                alert.show();               
            }

        });
        dialog.show();

問題は、戻るボタンを押すと、現在のダイアログがキャンセルされ、「確認メッセージ」が表示されることです。ユーザーが確認するまでダイアログがキャンセルされないようにするにはどうすればよいですか?

4

2 に答える 2

6

onCancelダイアログがキャンセルされたときに呼び出されるため、ダイアログがキャンセルされた後に確認メッセージが表示されます。setOnKeyListener代わりにダイアログを表示する必要があります。

dialog.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Toast.makeText(Activity.this, "back pressed", Toast.LENGTH_SHORT).show();
            return true;
        }
        return false;
    }
});
于 2012-10-03T02:36:13.050 に答える
0

基本ダイアログは次のようにカスタマイズできます。

private void doCreateBaseDlg(){
    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.activity_dialog_on_dialog_cutomize);
    dialog.setTitle("Title...");

    //this is the button in your customize layout
    Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
    dialogButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            doCreate1stDlg();//here display your second conform dialog
        }
    });

    dialog.show();
}

試してみましたが、問題なく動作します。希望があなたを助けることができます。

于 2012-10-03T02:55:15.263 に答える