Заполнить фрагмент, который не виден с данными? - PullRequest
0 голосов
/ 15 января 2020

У меня есть действие, и я использую класс FragmentStateAdapter (ViewPager2) для перемещения между двумя фрагментами, как в https://developer.android.com/training/animation/screen-slide-2.

Моя текущая проблема заключается в том, что когда я пытаюсь получить доступ к элементам представления второго фрагмента в моей деятельности:

TextView textViewOfFragmentB = (TextView) fragmentB.getView().findViewById(R.id.exampleTextViewOfFragmentB);

Я получаю:

 java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

Когда я пытаюсь это сделать с первым фрагментом (этого слайдера), это работает. Возможно, потому что это первый фрагмент, который изначально виден?

Какие есть у меня возможности доступа к элементам представления обоих фрагментов, если один из них не виден / не создан?

Мой вариант использования это что-то вроде: у меня есть два фрагмента. Один показывает еду, а другой напитки. Фрагменты должны быть скользящими, поэтому на экране отображается только одна категория (аналогично: https://developer.android.com/training/animation/anim_page_transformer_zoomout.mp4). С помощью службы я получаю внешние данные для обеих категорий в моей MainActivity. Так что у меня уже есть все данные, которые мне нужны, в MainActivity. И эти данные я хочу разделить на оба фрагмента и отобразить их, например, Пицца: 4 $, а на другом фрагменте Коктейль: 5 $

1 Ответ

0 голосов
/ 15 января 2020

Прежде чем фрагмент станет видимым, я думаю, вы пытаетесь получить доступ к представлению. Для работы с ViewPager.OnPageChangeListener существует метод переопределения onPageSelected.

...