私は現在チャットアプリを書いています。これは基本的に WhatsApp と非常によく似ています。起動時に最後の会話の概要が表示されます。
やらなければならない/パスしなければならない誰かと新しい会話を始めたいとき
- 最後の会話の概要アクティビティ (+ をクリックして会話相手を探します)
- コース活動(コースを選択)
- コース参加者の活動(選択パートナー)
- 会話活動
つまり、基本的にスタック: [A1, A2, A3, A4]
ここで、ユーザーはコースメンバーとの素敵なチャットを行い、最後の会話の概要に戻りたいと考えていますが、戻るボタンを押すと、「コース参加者のアクティビティ」である A3 に移動します。
ユーザーが A4 の戻るボタンを押して A1 に戻ってほしい。
間違い: [A1, A2, A3 , A4] -> 戻る -> [A1, A2, A3]
正しい: [A1, A2, A3 , A4] -> 戻る -> [A1]
あるいは、私は想像することができました
右: [A1, A2, A3] -> スタート A4 -> [A1, A4]
前もって感謝します。
[編集]
答え
この2つの組み合わせであることが判明しました。
onOptionsItemSelected() では、指定された Google の規則により、これを (もちろんスイッチの場合に) 入れました。
final Intent intent = new Intent(this, MainPage.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
と
マニフェストでアクティビティ A1 の android:launchMode を singleTop として定義します。
なぜ組み合わせ?Flat Intent.FLAG_ACTIVITY_CLEAR_TOP
kills アクティビティ A1 を追加するだけです。これは私の最初の活動だったので、いくつかの登録/チェックの実装が含まれていました。このアクティビティが破棄された後に再度開始すると、onCreate が不必要に呼び出されました。
launchmodesingletop
はこれを防ぎます。