1

私は単一の活動をしています。ユーザーが戻るボタンを使用してこのアクティビティを閉じたい場合、ユーザーが確信しているかどうか、およびその他のオプションのダイアログを表示したいと考えています。

ボタンをオーバーライドすることは問題ではありませんが、実際にはダイアログからアプリを終了することが問題です。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        Log.i(tag, "Pushed BACK button by onKeyDown");
    }

    try {
        showFinishDialog();
        return super.onKeyDown(keyCode, event);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return super.onKeyDown(keyCode, event);
    }
}

これにより、ダイアログ (showFinishDialog()) が開きますが、最終的にアクティビティを実際に終了するためにダイアログ内で何を呼び出すべきかわかりません。onBackPressed や onDestroy などのパブリック関数を試しましたが、成功しませんでした。

よろしくお願いします!

4

2 に答える 2

2

オーバーライドしonBackPressed()ます。戻るボタンをオーバーライドしてダイアログボックスをポップアップするコードに従うことで、目標を達成できます。

public void onBackPressed() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure you want to exit?")
            .setCancelable(false)
            .setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) { 
                        //Do your coding here. For Positive button

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

}

それが役に立てば幸い。

于 2013-01-12T18:35:02.483 に答える
0

書き留めるだけ

finish();

アクティビティを終了したい場所。

ボタンクリックで終了したい場合のように

@Override
public void onClick(DialogInterface dialog, int id) {
finish();
}
于 2013-01-12T18:40:38.383 に答える