私はインターフェイス、アクティビティ、およびフラグメントの相互作用をよりよく理解しようとしています。 this link from the Android documentationによるとディープネストされたチェーン内のフラグメント間の通信方法は?
:
は、彼らは、この例を与える:多くの場合、あなたは一つの断片がユーザーイベントに基づいてコンテンツを変更する 例えば、相互に通信することになるでしょう。すべて フラグメントとフラグメントの通信は、関連付けられた アクティビティを通じて行われます。 2つのフラグメントは決して直接通信するべきではありません。
public class HeadlinesFragment extends ListFragment {
OnHeadlineSelectedListener mCallback;
// Container Activity must implement this interface
public interface OnHeadlineSelectedListener {
public void onArticleSelected(int position);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
...
}
あなたはフラグメントのネストされたチェーンを扱っている場合は、この変更を行う方法は?例えば
、のは、私が断片は、明示的であるためになど、別のフラグメントを含有していることが、その後断片を含む活動を、持っていた、と言ってみましょう:私はのために認められたベストプラクティスを理解しようとしています
Activity --> Fragment1 --> Fragment2 --> Fragment3 --> Fragment4 --> Fragment5
たとえば、Fragment5にはEditTextとOnClickListenerが付いたButtonがあります。ボタンを押すと、そのEditTextの内容がFragment3の関数に送信されます。
私の質問:
に応じたので、私は、我々はそのインターフェイスを実装する必要があり帰り前で活性を意味する例までトップに似Fragment5のインターフェイス/リスナーを定義する必要があることを前提とドキュメンテーション、アクティビティは、フラグメント間で情報を渡す必要があります。
今、このアクティビティから、情報をFragment3にどのように渡すのですか?
古いフラグメントを新しいフラグメント 'setArguments'に置き換えたときに' Bundle 'を使用してデータを転送すると、その中に役立ちます。 –
@AnshulTyagiそれは私の質問には関係ありません。私はFactoryパターンについては問いません。私は子供の断片から少数の親に情報を転送する方法について尋ねています。 –
あなたはOttoのようなサードパーティのライブラリを使うことができます –