2016-07-14 27 views
1

私は、そのフラグメントからアクティビティへのイベントの削除とシグナリングのオーダーとプロセスの周りを頭で覆そうとしています。Androidの複数のフラグメントコールバックの混乱

私はちょうどアイテムのリストである1つのFragmentAを持つようにしようとしています、新しいアイテムを追加するフォームをロードするボタンクリック時にFragmentBに移行し、FragmentBがフォームで完了したら、 FragmentAのリスト(Main ArraylistはMainActivityに格納されています)。

基本的には、MainActivityは1つのFragmentA(項目をリストに入れる)を作成します。私はまた、FragmentB(アイテムをリストに追加できるようにするフォーム)を持っています。

私が混乱しているのは、コールバックを正しく設定する方法です。私はちょうど1つのフラグメント(using thisthis tutorials)でコールバックを実装する方法を理解していますが、私の混乱はこれです:

正しい順番はどれですか?

  1. MainActivityは(遷移)FragmentA、FragmentBにFragmentA次いで 遷移を '作成します'。その後、FragmentBは、FragmentAにコールバック( の新しい項目を追加)を送信し、MainActivity にFragmentA信号を送信して、その項目をメインリスト(コールバック2)に追加します。 MainActivity then はFragmentBを閉じます。 (私はFragmentAを開いたままにしたい)。

  2. MainActivityが「作成」(遷移)FragmentA、FragmentA、次に がFragmentBに移行します。その後、FragmentBはMainActivityにコールバック( の新しい項目を追加)を送信します。 MainActivityは次にFragmentBを閉じ、 はFragmentAに状態を返します。

  3. MainActivity '作成'(遷移)FragmentA、MainActivity FragmentAは 断片スイッチ(クローズfragmentAをまたはbackstackに追加)するコールバックを信号FragmentBに次に 遷移します。フラグメントB はMainActivityにコールバックを送信し、MainActivityはFragmentBを閉じ、 を閉じてからFragmentAを再オープンします。

うまくいけば私はそれを十分に説明しましたが、私はそれが私の言い方に紛らわしいと思います。

編集

一つの最後の質問は、活動はあなたがコールバックを必要な15種類のかけらを持っていた場合には15種類の断片リスナー「を実施」に終わるのでしょうか?ちょっと過度に思える。

おかげ

+0

15個のフラグメントがあり、それぞれ独自のインターフェイスが必要ですが、これは少し過剰なようです。その点まで進んでいれば、おそらくEventBusを使ったほうが良いかもしれませんが、何らかの方法でこれらのイベントプロセスのそれぞれを処理する必要があります –

+0

質問については、私はオプション2のシンプルさが好きです。しかし、これは、リストアダプタがアクティビティクラスのArraylistにバインドされていると仮定しています –

答えて

1

ちょうど父とFragmentのようActivityは父親への依存性を持っている彼の子供なので、子どもたちが自分の願いを作ってみようと砂糖のパパは、彼の恋人のために良いものを決める考えます!

このアプローチの主な利点は、コードの整合性とモジュール性です。実際にはサーバーとクライアントの関係があり、Fragmentはリクエストを送信し、Activityによってタスクが実行されます。各要素は、 。

実装する必要があるインターフェイスの数について心配する必要はありませんが、なぜActivityが存在するのかを覚えておいてください。Fragmentを具体的にActivityで管理する必要があります。

BroadcastReceiverおよびEventBusライブラリは、通信のための他のオプションですが、あなたのケースでは最適ではありません!

関連する問題