1

メインメニューを正しく実装する方法がわかりません。次のことが起こっています。

MainMenu -> ActivityA -> ActivityB -> ActivityC -> MainMenu

MainMenu に戻ったときに、ActivityC (および ActA & ActB も同様) に戻れないようにしたいと考えています。私の最初の手がかりは、戻るボタンをオーバーライドして、PID でアプリを強制終了するなどの厄介なことをすることでしたが、それはお勧めできないことを知っているので...

FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_NO_HISTORY など、インテント用の興味深いフラグが多数ありますが、どれも機能しません。FLAG_ACTIVITY_CLEAR_TOP は、メイン メニューに到達するとすぐにアプリを閉じます (これまでのところ最良の結果です...)。他のものはまったく効果がなく、戻るだけで ActivityC に戻りました。これら4つだけでなく、すべてのアクティビティフラグをテストしました...メインメニューに android:clearTaskOnLaunch="true" を定義することもテストしましたが、成功しませんでした。

そうそう、私は2.2、APIレベル8を扱っています

どんな提案でも大歓迎です。よろしくお願いします!

4

2 に答える 2

0

ここで提案されている解決策は完璧です:

https://stackoverflow.com/a/8678500/1841940

バックスタックから削除する必要があるすべてのアクティビティに BroadCastListener を登録し、メイン メニューに到達したらブロードキャストを送信し、すべてのレシーバーが finish() を呼び出します。

これは本当にうまくいきます!

于 2013-02-03T19:10:35.897 に答える
0

MainActivity でメソッド OnKeyDown をオーバーライドする必要があります。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //TODO: killing the App by its PID 
        return false;
    } else {
        return super.onKeyDown(keyCode, event);
    }
}
于 2013-01-31T07:41:55.550 に答える