Fragment
を持つFrameLayout
があります。この最初のフラグメント(A)は、Framelayout内に別のフラグメント(B)をロードします。内部フラグメント(B)からgetParentFragment
を呼び出すと、null
が返されます。この方法はどのように適切に使用されるべきですか?
私の場合、fragmentAはfragmentBにネストされていますが、FragmentAでgetParentFragmentを呼び出した後でもnullを取得します。最後に、FragmentBでgetFragmentManagerではなくgetChildFragmentManagerを使用する必要があることがわかりました。
これを確認してください getSupportFragmentManager()とgetChildFragmentManager()の違いは何ですか?
私は同じ問題に直面し、getChildFragmentManager()
を使用して親フラグメントの2番目のフラグメントをホストすることで問題を修正しましたが、null値を取得できません...
親フラグメント
SignUpFragment signUpFragment = new SignUpFragment();
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.contentPanel, signUpFragment)
.addToBackStack(null).commit();
子フラグメント:私が使用したのはダイアログです
HospitalCardDialog hospitalCardDialog = new HospitalCardDialog();
hospitalCardDialog.show(getChildFragmentManager(), "");
1つの助けとなったのは、アダプターを作成するときにgetChildFragmentManager()
を使用することです。
アダプタを使用していない場合は、トランザクションを実行するときにgetChildFragmentManager()
を使用するだけです。
setTargetFragment()
は、フラグメントのmoveState()
でエラーが発生するため推奨されません(フラグメントはFragmentManagerに結び付けられる必要があるため)