1

Support4Demos 機能 Fragment スタック... ただし、ポップ/プッシュの CountingFragment コントロールをスタックの外側に配置すると便利です (すべてが 1 つのレイアウトで行われますが、プッシュ/ポップ ボタンは下にあり、レイアウト全体を保持する Fragment 内にあります。

どうすれ

[編集] 別の見方:スタック上のFragments
をアクティビティのように動作させ、それぞれが自分自身をポップしたり、別のものを起動したり
したい. 「ホームに戻る」/「新規追加」/「ポップトップ」ボタンが FragmentManager を保持する FragmentStackSupport ではなく、CountingFragments にあるように、Support4Demos から?
妥当な設計 - 「CountingFragments」を検討してください。クリック可能な ListView が含まれていますか?

どうやってするか?理想的には、各スタック Fragment は、「スタック ホルダー」 Fragment またはその (子) FragmentManager への参照を保持します。ただし、これらは Parcelable ではなく、Fragment コンストラクターを使用してはなりません(ただし、他のすべては私が行うとうまく機能します)。 「スタックホルダー」フラグメントも破棄して再作成できるため、それへの参照を保持することも悪いことです。


[EDIT2] さて
、ここに私が思いついたいくつかのアイデアがあります。

  • 「家に帰る」と「ポップトップ」の場合、これらの(目に見えない)ボタンをホスティングフラグメントに追加し、ホストされたフラグメントでgetWindow().getDecorView().findViewByIdまたはそのような方法でそれらにアクセスできると思います。
    それは十分に醜いです。しかし、新しいものをプッシュしますか?私が考えることができる唯一の関連することは、FragmentManagerへの参照を保持するカスタムViewクラスをホスティングレイアウトに追加して、ホストされたFragmentsによって取得されることです。
  • FragmentManager への参照を静的マップのどこかに保持する
  • ホスティング Fragment に BroadcastReceiver を登録し、ホストされているものからのデータを含むブロードキャストを送信し、何をすべきかを伝えます。しかし、ホストの Fragment が子を子守する必要はありません。
  • スタックされた各 Fragment 自体を、その真のコンテンツまたは次のスタックされた Fragment のホストにします。そうすれば、常に FragmentManager が手元にありますが (ポップを除く)、ページごとに 2 つのフラグメントが必要になります。

もっときれいな方法があることを教えてください。

4

0 に答える 0