Activity Groupで戻るキーを押してダイアログボックスを終了するかどうかを尋ねる

1850 ワード

詳細
今日androidプログラムを書く時に1つの問題に出会って、1つのActivity GroupはN個のActivityを含んで、戻るボタンをクリックする時プログラムを退出するかどうかを尋ねて、プログラムを始めるのはこのように書きます:
public class MainActivity extends ActivityGroup {


    //    ……


    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("  ");
            builder.setMessage("     ?");
            builder.setPositiveButton(R.string.confirm, new  DialogInterface.OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
            builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                }
            });
            builder.create().show();
            return true;
        }else{
            return super.onKeyUp(keyCode, event);
        }
    }

}

 
結局、戻るキーを押すと、プログラムは終了します.
 
後で資料を探したら、onKeyDownイベントをキャプチャするように変更する必要があります.
次に、サブactivityに次のコードを追加する必要があります.
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            return getParent().onKeyDown(keyCode, event);
        }else{
            return super.onKeyDown(keyCode, event);
        }
    }

 
何か悪いところがありましたら、よろしくお願いします.