2011-11-03 8 views
9

どのようにして再スタックせずにバックスタックからフラグメントをポップできますか?私はちょうどバックスタックから削除したい、私はそれを表示したくない。再スタックせずにバックスタックからフラグメントをポップする方法はありますか?

+0

解決策は見つかりましたか?私は、バックスラック内の約140個のフラグメントでアプリケーションがクラッシュすることに気づいたので、約100個のフラグメントで最も古いものを取り除きたいが、まだそれを行う方法が見つかっていない。 –

答えて

0

建築的な質問です。 2つのコントローラ(フラグメント/アクティビティ)が2つあると仮定します。 両方とも、一部のモデルの1つのインスタンスに接続されています(Application-相続人のクラスとそれにゲッターを作る)。 コントローラーBで何か面白いことが起こったとき、彼はコントローラーBについてモデルを通知してから、モデルでcontrollerA.finish()/ controllerA.remove()を呼び出します。 もちろん、私はこのソリューションを可能な限りうまく実装しようとしますが、主な考え方があります。

2)別の状況では、startActivity(intent)の直後にfinish()を呼び出します。また、startActivityForResult(intent、requestCode)と2番目のアクティビティメソッドonActivityResult(requestCode、responseCode、intent)が終了した後に、requestCodeが等しい場合は、アクティビティを終了します。

+0

フラグメントには終了メソッドがありません。 –

+0

簡単なチェックをonResume()またはonStart()に挿入することができます - 削除する必要がある場合は? – QuickNick

0

FragmentTransactionのメソッド
public abstract FragmentTransaction addToBackStack (String name)
を使用しない場合は、バックスタックに追加します。それを取り除く必要はありません。

+1

バックスタックから特定のフラグメントを削除する必要があります。 popBackStackは、指定されたフラグメントを再開するため、機能しません。 –

+0

popBackStackで使用されているフラグは何ですか? POP_BACK_STACK_INCLUSIVEを試してみてください。 –

+0

はいこのフラグを使用しました。バックスタックエントリのOnResumeは依然として呼び出されます。 –

関連する問題