GetParentFragment возвращает null

У меня есть Fragment с FrameLayout . Этот первый фрагмент (A) загружает внутри своего Framelayout другой фрагмент (B). Когда я вызываю getParentFragment из внутреннего фрагмента (B), я получаю null . Как этот метод следует использовать должным образом?

Solutions Collecting From Web of "GetParentFragment возвращает null"

GetParentFragment () был введен в API уровня 17 (Android 4.2). Android 4.2 представил идею вложенных фрагментов (фрагменты, содержащие другие фрагменты). Вызов этого результата имеет значение null, если фрагмент имеет родительский объект, который является активностью.

Посмотрите на это .

Если вы используете библиотеку поддержки, то вы можете использовать getParent (), возможно, вам нужно использовать getChildFragmentManager () при выполнении транзакции фрагмента. См. Это

В моем случае, хотя мой фрагмент был вложен в фрагмент B, но я все еще получаю null после вызова getParentFragment в FragmentA. Наконец, я обнаружил, что я должен использовать getChildFragmentManager, а не getFragmentManager в FragmentB.

Проверьте это. В чем разница между getSupportFragmentManager () и getChildFragmentManager ()?

Единственное, что помогло – при создании адаптера используйте getChildFragmentManager() .

Если вы не используете адаптер, просто используйте getChildFragmentManager() при совершении транзакций.

setTargetFragment() не рекомендуется, так как он дает ошибки в moveState() фрагмента (поскольку фрагменты должны быть привязаны к FragmentManager)

Я столкнулся с той же проблемой и исправил проблемы, разместив второй фрагмент в родительском фрагменте с помощью getChildFragmentManager() тогда вы не получите нулевое значение …

Родительский фрагмент

  SignUpFragment signUpFragment = new SignUpFragment(); getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.contentPanel, signUpFragment) .addToBackStack(null).commit(); 

Детский фрагмент: то, что я использовал, является диалогом

  HospitalCardDialog hospitalCardDialog = new HospitalCardDialog(); hospitalCardDialog.show(getChildFragmentManager(), "");