あなたは断片Bは、フラグメントA、その後、あなたが使用するのと同じアプローチを使用することができます(つまり、あなたが使用してフラグメントAのgetChildFragmentManager()
は、フラグメントにそれを追加しました)の子断片であることを言っている場合Activity
インターフェイスの場合、getActivity()
の代わりにgetParentFragment()
を使用します。例えば
:
フラグメントB:
@Override
public void onAttach(Context context) {
MyInterface myInterface = (MyInterface) getParentFragment();
}
フラグメントAがMyInterface
を実装すると仮定すると。
我々はフラグメントが他のフラグメントによってホストされているか、活動のようなものであるかどうかを知ることを避けるために使用してきた一つの便利なメソッド:
public static <T> getInterface(Class<T> interfaceClass, Fragment thisFragment) {
final Fragment parent = thisFragment.getParentFragment();
if (parent != null && interfaceClass.isAssignableFrom(parent)) {
return interfaceClass.cast(parent);
}
final Activity activity = thisFragment.getActivity();
if (activity != null && interfaceClass.isAssignableFrom(activity)) {
return interfaceClass.cast(activity);
}
return null;
}
次に、あなただけ使用することができます。
MyInterface myInterface = getInterface(MyInterface.class, this);
は、
であり、フラグメントBが子フラグメントとしてホストされているのか、アクティビティ内で直接ホストされているのかは関係ありません。
http://stackoverflow.com/questions/7149802/how-to-transfer-some-data-to-another-fragment – XxGoliathusxX
データではなく、インターフェイスのリスナーです。 – riadrifai
あなたはイベントバスライブラリを試すこともできます。それはコミュニケーションを簡単にするはずです。しかし、@ JPalによって提案された解決策はうまくいくはずです。これはもっと標準的な方法です。 –