0

私はビューのこの階層を持っています:Activity -> ViewPager -> MyViewGroup

MyViewGroup (およびそこのみ) で、onKeyUp イベントをオーバーライドします。

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.i(TAG, "Back");
            return true;
        } else {
            return super.onKeyUp(keyCode, event);
        }
    }

しかし、「戻る」キーを押すと、このオーバーライドは呼び出されず、アプリは閉じられます。なんで?

4

1 に答える 1

2

デフォルトでは、戻るボタンでアクティビティが終了します。アンドロイドソースから:

ユーザーが戻るキーを押したことをアクティビティが検出したときに呼び出されます。デフォルトの実装は単に現在のアクティビティを終了しますが、これをオーバーライドして、必要なことを行うことができます。

public void onBackPressed() {
    if (!mFragments.popBackStackImmediate()) {
        finish();
    }
}

この動作を変更したい場合は、Activity で onBackPressed をオーバーライドし、super を呼び出さないようにする必要があります。その後、独自の動作を実装できます。

public @Override void onBackPressed()
{
    if (doSomeThingOnBackPressed) {
        // do some stuff
        return;
    }
    super.onBackPressed();
}
于 2012-07-01T09:33:11.513 に答える