0

いつものように、ビューページによってフラグメントを示すタブ付きアクティビティがあります。 この断片にはリストがあります。DialogFragmentを別のフラグメント内のメソッドを呼び出す方法

ユーザーのアクションの1つは、ユーザーがこのリストに新しいアイテムを挿入するためのダイアログフラグメントを示しています。

私はedittextsを使ってdialogfragmentを表示し、ユーザーは新しいアイテムを作成します。

質問:このアイテムをビューページのフラグメントリストに挿入するにはどうすればよいですか?

どのフラグメントからでも、アクティビティにアクセスするためにgetActivity()を呼び出すことはできますが、ダイアログフラグメントの背後に表示されている別のフラグメントにアクセスするにはどうすればよいですか?

ありがとうございます。

答えて

1

断片 - FragmentA ダイアログ - NewItemDialogFragment

あなたが不足しているしている方法がsetTargetFragment()あります。 NewItemDialogFragmentを構築している間に、ダイアログのターゲットフラグメントとしてFragmentAを渡してこのメ​​ソッドを呼び出します。 FragmentAインスタンスには、getTargetFragment()NewItemDialogFragmentと呼び、FragmentAにキャストして新しく作成したアイテムを追加できます。

また、あなたは、このためにイベントバスを使用することができますFragmentANewItemDialogFragment

+0

あなたの答えをありがとう、私はアンドロイドの開発者によると正しい方法だと思う。 – Informatheus

1

あなたはdialogfragmentから結果(ユーザーがdialogfragment編集​​、テキストに挿入されたもの)を取得し、新しい項目として追加する(dialogfragmentと呼ばれるフラグメントでこれを使用したいようですねその場合、selected answer hereはこの問題を解決します - また、私はthis Gistが参照するのに良いリソースだと思います。 あなたのケースでは、このGistで行ったようなカスタムリスナー/コールバックの実装も良い考えです。お役に立てれば。リストアイテムと

+0

感謝。 – Informatheus

1

との間の契約のインターフェイスを作成することができます。

http://square.github.io/otto/

これは使い方の例である:あなたの良い答えを

Bus bus = new Bus(); 

bus.post(new AnswerAvailableEvent(42)); 

@Subscribe public void answerAvailable(AnswerAvailableEvent event) { 
    // TODO: React to the event somehow! 
} 

bus.register(this); // In order to receive events, a class instance needs to register with the bus. 
+0

ありがとう、私はこのlibで考えたが、私はいくつかのネイティブな解決策を望んでいた。 – Informatheus

関連する問題