0

У меня есть три фрагмента и одно действие. Когда пользователь запускает и приложение, первый фрагмент с картой и маркерами (F1) на нем отображается в действии. Пользователь нажимает на один из маркеров, второй фрагмент (F2) показывает некоторые другие параметры. Когда пользователь выбирает конкретную опцию в F2, слушатель запускает и передает данные в основную активность. Затем основная активность должна отображать третий фрагмент (F3) и вызывать один из его методов. Теперь, если этот метод вызывается до того, как происходит onViewCreated, он выдает исключение NullPointerException в определенных полях (логически).Использование прослушивателя фрагментов без реализации в родительской активности

Как я могу реализовать способ MainActivity для вызова F3 при возникновении onViewCreated или в момент, когда эти конкретные поля становятся не нулями, без реализации другого интерфейса в MainActivity (будет сложно, потому что у меня уже достаточно интерфейсов, реализованных в нем).

Есть ли какой-либо другой способ достижения этого?

+0

Вы можете вызвать 'фрагмент.isResumed()' из вашей 'Activity' или что-то вроде этого (' isVisible() ', ..) перед вызовом метода' Fragment', если 'false', подождать некоторое время и попробовать еще раз? – yennsarah

+0

@Amy Подождите 'некоторое время'? – Aleksandar

+1

Вы должны вызывать только метод Фрагмента, взаимодействующий с пользовательским интерфейсом, когда он создается - поэтому, если ваш вызов метода получает «критическую по времени», должно быть достаточно маленькое 'wait (100)'. Другая идея, но не уверен, работает ли она: вы можете попробовать установить «флаг» в свой «Фрагмент», установить его значение true при создании пользовательского интерфейса, а в вашем методе - «while (! Flag)» с ' wait' ... – yennsarah

ответ

1

Вы можете передать некоторый параметр F3 во время создания фрагмента, а затем в onCreateView motehod проверить параметр вызова метода.

+0

Можете ли это сделать, используя некоторых слушателей, может быть? – Aleksandar

+0

Как вы говорите, вы можете установить прослушиватель и вызвать метод слушателя в onCreateView или поместить некоторый параметр в пакет фрагмента и прочитать эти параметры из пакета. –

+0

Я сделал то, что вы предложили. Другая проблема происходит, но дело не в этом. Благодарю. – Aleksandar

Смежные вопросы