Android: ссылка на дочерний фрагмент из родительского фрагмента

У меня есть сценарий вложенного фрагмента. Попытки сослаться на дочерний фрагмент из родительского фрагмента дают нуль. Что мне здесь не хватает?

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

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <!-- Statically nested fragment -->
    <fragment
        android:name="reports.fragments.fragments.usageBreakUp.fragments.Filter"
        android:id="@+id/fragment_filter"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

Вот как я пытаюсь получить доступ к дочернему фрагменту из родительского фрагмента

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    Log.i(LOG_TAG, "ON VIEW CREATED");

    filter = (Filter) getChildFragmentManager().findFragmentById(R.id.fragment_filter);
    filter.populateStorageFilter(); // NPE here
}

person Abhijith Madhav    schedule 19.11.2014    source источник


Ответы (2)


ты пробовал это

filter = (Filter) view.findViewById(R.id.fragment_filter);
person Ali    schedule 19.11.2014

Вы, вероятно, получаете NPE внутри populateStorageFilter, потому что onViewCreated вашего дочернего фрагмента еще не был вызван, т.е. дочернее представление не было инициализировано. Поэтому, если вы используете какие-либо ссылки на представления внутри populateStorageFilter, они будут null. Вам нужно дождаться создания представления дочернего фрагмента, а затем вызвать populateStorageFilter.

person lahodal    schedule 09.06.2015