私は を持ってFragment
いFrameLayout
ます。この最初のフラグメント (A) は、その Framelayout 内に別のフラグメント (B) をロードします。getParentFragment
内部フラグメント (B) から呼び出すと、 が得られnull
ます。この方法はどのように適切に使用する必要がありますか?
4 に答える
getParentFragment() は API レベル 17 (Android 4.2) で導入されました。Android 4.2 では、ネストされたフラグメント (他のフラグメントを含むフラグメント) の概念が導入されました。フラグメントにアクティビティである親がある場合、これを呼び出すと null になります。
これを見てください。
サポート ライブラリを使用している場合は、getParent() を使用できます。フラグメント トランザクションの実行中に getChildFragmentManager() を使用する必要がある場合があります。これを見る
私の場合、私のfragmentAはfragmentBにネストされていましたが、FragmentAでgetParentFragmentを呼び出した後でもnullになります。最後に、FragmentB では getFragmentManager ではなく getChildFragmentManager を使用する必要があることがわかりました。
これを確認してくださいgetSupportFragmentManager() と getChildFragmentManager() の違いは何ですか?
助けになったのは、アダプターの使用を作成するときgetChildFragmentManager()
です。
アダプターを使用していない場合は、getChildFragmentManager()
トランザクションを実行するときにのみ使用してください。
setTargetFragment()
フラグメントのエラーが発生するため、お勧めしませんmoveState()
(フラグメントは FragmentManager に関連付ける必要があるため)
私は同じ問題に直面し、親フラグメントで2番目のフラグメントをホストすることで問題を修正し、getChildFragmentManager()
その後null値を取得しません...
親フラグメント
SignUpFragment signUpFragment = new SignUpFragment();
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.contentPanel, signUpFragment)
.addToBackStack(null).commit();
子フラグメント: 私が使用したのはダイアログです
HospitalCardDialog hospitalCardDialog = new HospitalCardDialog();
hospitalCardDialog.show(getChildFragmentManager(), "");