1

次のようなアプリケーション構造があります。

1活動

nフラグメント

アプリ フローは次のようなものです。

(アクティビティ 1)(フラグメント A) => (アクティビティ 1)(フラグメント B) => (アクティビティ 1)(フラグメント C) => ...

そのため、1 つのアクティビティ クラスの複数のインスタンスがインスタンス化され、それぞれに異なるフラグメントが含まれます。

また、フラグメント B にいる場合 (仮定)、フラグメント トランザクションを実行してフラグメント B' に置き換えるため、新しいアクティビティは作成されず、フラグメント B はフラグメント B' に置き換えられます。

ここで、このトランザクションで、フラグメント A を含むアクティビティと、以前に起動された他のすべてのアクティビティをバックスタックからポップしたいと考えています

インテント フラグ ( CLEAR_TOP ) を使用してルート アクティビティを開くことができますが、ここではFragmentTransactionを実行しており、このイベントでアクティビティ バックスタックをクリアしたいと考えています。

助けはありますか?

ここでインテント呼び出しを行っていないため、FLAG_ACTIVITY_CLEAR_TOP を使用せずにアクティビティ バックスタックをクリアする方法は?

4

1 に答える 1

0

アクティビティ A への静的参照を彼のクラスに格納できます。履歴から A を削除する必要がある場合は、ActivityA.getInstance().finish(); を呼び出すだけです。

A アクティビティに複数のインスタンスがある場合は、それへの参照を Vector に置き、ActivityA.getInstance(0).finish(); を使用して終了します。

于 2012-09-12T16:26:37.357 に答える