Android: родительский фрагмент вложенного фрагмента
A getParentFragment()
из моего вложенного фрагмента возвращает null
. Я понимаю, что получение null
означает, что фрагмент привязан к активности, а не к вложенному фрагменту контейнера. Но я явно вложен дочерний фрагмент внутри родительского фрагмента, используя дочерний элемент FragmentManager
, и поэтому думаю, что я не должен получать null
. Не могли бы вы рассказать мне, что мне не хватает?
Родительский фрагмент
public class UsageBreakUp extends Fragment implements Filter.OnFragmentInteractionListener {
....
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getChildFragmentManager().beginTransaction().add(R.id.filter, new Filter()).commit();
}
...
}
Детский фрагмент
public class Filter extends Fragment {
...
public Filter() {
if (getParentFragment() == null)
Log.d(LOG_TAG, "parent fragment is null");
}
...
}
Ответы
Ответ 1
Я вызывал getParentFragment()
в конструкторе дочернего фрагмента и, таким образом, до того, как дочерний фрагмент был полностью создан. Сдвиг getParentFragment()
до onCreateView()
решил проблему. Сдвиг не был проблемой, поскольку я вызывал getParentFragment()
, чтобы проверить, был ли родительский фрагмент реализован прослушиватель взаимодействия с дочерним фрагментом.