36

私は を持ってFragmentFrameLayoutます。この最初のフラグメント (A) は、その Framelayout 内に別のフラグメント (B) をロードします。getParentFragment内部フラグメント (B) から呼び出すと、 が得られnullます。この方法はどのように適切に使用する必要がありますか?

4

4 に答える 4

54

getParentFragment() は API レベル 17 (Android 4.2) で導入されました。Android 4.2 では、ネストされたフラグメント (他のフラグメントを含むフラグメント) の概念が導入されました。フラグメントにアクティビティである親がある場合、これを呼び出すと null になります。

これを見てください。

サポート ライブラリを使用している場合は、getParent() を使用できます。フラグメント トランザクションの実行中に getChildFragmentManager() を使用する必要がある場合があります。これを見る

于 2013-02-11T01:08:06.817 に答える
37

私の場合、私のfragmentAはfragmentBにネストされていましたが、FragmentAでgetParentFragmentを呼び出した後でもnullになります。最後に、FragmentB では getFragmentManager ではなく getChildFragmentManager を使用する必要があることがわかりました。

これを確認してくださいgetSupportFragmentManager() と getChildFragmentManager() の違いは何ですか?

于 2013-09-29T10:54:40.733 に答える
5

助けになったのは、アダプターの使用を作成するときgetChildFragmentManager()です。

アダプターを使用していない場合は、getChildFragmentManager()トランザクションを実行するときにのみ使用してください。

setTargetFragment()フラグメントのエラーが発生するため、お勧めしませんmoveState()(フラグメントは FragmentManager に関連付ける必要があるため)

于 2016-06-21T04:07:28.503 に答える
4

私は同じ問題に直面し、親フラグメントで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(), "");
于 2016-12-05T09:44:25.180 に答える