Судя по всему Activity не захватывается, ведь фрагмент создается при помощи FragmentStateAdapter и поэтому весь обмен данными происходит только лишь через него. Поэтому пойду долбиться в MainActivity т.к. это банально легче 😏
Убрать логику с активити и вынести в отдельную вьюмодель для контректного фрагмента не подходит?
Не-а, так как там один фрагмент с одним рисайклом и в этот рисайкл надо пихать разные адаптеры (и разные листенеры) в зависимости от текущей позиции. Поэтому сейчас проще и легче всё необходимое для работы рисайклера получать через MainActivity mainActivity = (MainActivity) getActivity(); чем делать для этого отдельную вьюмодель
Тоесть с фрагмента вы обращаетесь в активити?
Смотри: у меня есть TabLayout и для него ViewPager2. Для работы вьюпейджера нужон Fragment и FragmentStateAdapter, поэтому если очень упростить, то выходит примерно вот это: Fragment - (createFragment) -> FragmentStateAdapter - (setAdapter) -> ViewPager2 - (viewPager) -> TabLayoutMediator <- (tabLayout) - TabLayout. Отсюда получаем, что мы не можем сразу обратиться к Fragment, нам нужно работать именно с FragmentStateAdapter и через него передавать "простые" данные (типа int, String и так далее), а вот со "сложными" данными здесь начинается "веселье". Поэтому для "сложных" данных тут, как я понял, либо через MainActivity mainActivity = (MainActivity) getActivity(); либо через FragmentFactory, третьего не дано.
Казалось бы, просто взять и использовать тут общую view model. Но нет, хочется создать себе трудности и героически их преодолеть.
Общая view model это типа shared view model?
Это та, которая растет из активити и которую могут использовать фрагменты этой активити. Зовите ее shared, если хочется.
Ну да, я это и имел ввиду, уже делал такую фигню, и вроде в документации она называется shared view model
Обсуждают сегодня