0

私は現在チャットアプリを書いています。これは基本的に WhatsApp と非常によく似ています。起動時に最後の会話の概要が表示されます。

やらなければならない/パスしなければならない誰かと新しい会話を始めたいとき

  1. 最後の会話の概要アクティビティ (+ をクリックして会話相手を探します)
  2. コース活動(コースを選択)
  3. コース参加者の活動(選択パートナー)
  4. 会話活動

つまり、基本的にスタック: [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_TOPkills アクティビティ A1 を追加するだけです。これは私の最初の活動だったので、いくつかの登録/チェックの実装が含まれていました。このアクティビティが破棄された後に再度開始すると、onCreate が不必要に呼び出されました。

launchmodesingletopはこれを防ぎます。

4

2 に答える 2

1

Android のデザインと一致するようにしてください。戻るボタンは、1 つ前のアクティビティに戻ります。

代わりに、アクション バーのホーム ボタンを使用します。

ナビゲーション用の Android デザイン パターン

アクションバーを作成します。

final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayHomeAsUpEnabled(true);

HomeButton がクリックされたときにトップ インテントに戻る:

final Intent intent = new Intent(this, MainPage.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2013-10-27T22:44:16.137 に答える