0

Android アプリケーションには、次のアクティビティ スタックがあります。

A -> B -> C

Intent.FLAG_ACTIVITY_CLEAR_TOPC では、startActivityとIntent.FLAG_ACTIVITY_SINGLE_TOPインテント フラグを使用して、ホーム (「A」) に戻ることができます。これにより、アクティビティ B と C からスタックがクリアされ、A だけになります。これは私の「家」に相当します。

ただし、別のセクション「E」があり、ホーム(「A」)を除くスタック全体をクリアしたい。次のように:

Activity stack: A -> B -> C
(User clicks on "E" button)
Activity stack result: A -> E

サブセクション(「B」、「E」など)を開くときに使用してみましIntent.FLAG_ACTIVITY_NEW_TASKたが、前のタスクをクリアする方法がないようです。私も試してみましIntent.FLAG_ACTIVITY_TASK_ON_HOMEたが、何もしていないようです(とにかく「ホーム」を設定するにはどうすればよいですか?)。

出来ますか?

4

1 に答える 1

1

それほど複雑ではない解決策は、 AにIntent渡す「クリアトップ」に余分なものを追加することですActivity。その情報に基づいて、ActivityAが新しいを受け取るたびにアクションを実行できますIntent

例えば。IntentAで受信したときに識別し、Activityそれに基づいて何かを実行する一連の「コマンド」を設定できます。つまり、ActivityEを開始します。

または、とIntentはパーセル可能であるため、 EIntentで始まるをAに送信するActivity「クリアトップ」に追加することができます。コマンドを識別するのではなく、「転送されたインテント」があるかどうかを確認して、を呼び出すことができます。IntentActivitystartActivity(forwardedIntent)

これらすべての場合、トップフラグがクリアされると、BとCがポップされ、Aが残ります。AがEActivityの起動を処理します。フローは、視覚的なフラッシュが発生しないように十分に高速である必要があります。奪い取る。ActivityActivity

あなたが求めている行動がユーザーにとって意味があるかどうかはわかりませんが、それはあなたに任せます。

于 2012-11-09T02:09:53.637 に答える