@egotyner

Каким образом обращаться из фрагмента к инстансу класса в главном активити?

Подскажите, каким образом обращаться скажем из фрагмента к инстансу класса в главном активити? Допустим, у меня вот в классе активити есть некий класс провайдер каких либо данных, которые мне необходимо пихать в seekBar. Если бы я делал это в классе активити, я бы просто написал findViewById(R.id.seekBar).setMax(myFooProvider.getMax()); - ну, грубо говоря. Каким же образом это сделать в фрагменте, если инстанс класса-провайдера мне !необходимо! хранить в классе активити, ибо при смене фрагментов - инстанс провайдера удаляется из памяти, вместе с фрагментом, если не ошибаюсь. А инстанс провайдера должен работать независимо от того, какой сейчас фрагмент активен, ибо в нем происходят фоновые действия.
Я, конечно, могу делать по сути тоже самое в активити, а не в фрагменте
(я об этом:findViewById(R.id.seekBar).setMax(myFooProvider.getMax()); ), а даже пытался, но поскольку seekBar находится в фрагменте А, при смене на фрагмент Б здесь вылетает null reference, ибо seekBaк, как я понял, выгружается из памяти, или типа того. Проверять на null или на активность фрагмента? А не накладно ли будет по процессорному времени, если скажем подобная проверка будет проходить раз в 50 миллисекунд? Или особо не играет?
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
@belozerow
Интерфейс самый верный способ:
developer.android.com/intl/ru/training/basics/frag...
Но и он тоже достаточно ужасен, когда интерфейсов на одну активити становится много.

EventBus не используйте. Он нужен только для исключительных ситуаций, вроде каких-то глобальных изменений - совершена покупка, произошел логаут и т.д.
Если его пихать везде, то это быстро превратится в ад. Тем более вы только начинаете разрабатывать судя по вопросу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gadfi
@gadfi
https://gamega.org
или прокиньте интерфейс(тогда в фрагменте проверяйте реализует ли актити этот интрефейс), или используйте EventBus
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы