例:BACKキーをおされたときにポップアップを表示してキャンセルか続行か促す
まずは、バックキーのイベントを取得して、ポップアップダイアログを表示します。ダイアログの結果を受け取って、キャンセルならfinish()でActivityを終了します。そうでなければ何もしません。
@Override public boolean onKeyDown (int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { showAlert(mContext, new OnMyAlert() { @Override public void onResult(boolean isYes) { if (isYes) { finish(); } } }); } return false; }
ポップアップダイアログを表示するメソッドです。Yes/Noの2つのボタンを表示して、結果を返します。
private void showAlert(Context context, final OnMyAlert onMyAlert) { // Build AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.warning); builder.setMessage(R.string.mes_warn_cancel); // Left button builder.setPositiveButton(R.string.answer_no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { onMyAlert.onResult(false); } }); // Right button builder.setNegativeButton(R.string.answer_yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { onMyAlert.onResult(true); } }); // Show builder.create().show(); }
結果を渡すためのインターフェースです。
public interface OnMyAlert { public abstract void onResult(boolean isYes); }
No comments:
Post a Comment