Size: a a a

StartAndroid Ru Chat

2021 October 07

VB

Vasiliy Brovkin in StartAndroid Ru Chat
Всем привет! Думаю на проекте пощупать jetpack compose
Есть у кого такой опыт? Стоит лезть в это или лучше по старинке?)
источник

R

RoSysTem in StartAndroid Ru Chat
Пробуй, довольно прост в понимании
источник

D

Dmitriy in StartAndroid Ru Chat
там 1 класс) просто 32 объекта, это сильно упрощает задачу) да и приходит обычный json, ничего своеобразного) у ретрофита есть gsonConverterFactory (вроде так называется), надо только не забыть добавить её в зависимости сначала, а потом и в сам объект ретрофита через addConverterFactory. так же обрати внимание на то, какого формата вообще приходит json, ну типа у тебя есть обёртка со списком объектов  акций внутри. ну и создай этот класс обёртки, что-то вроде :
data class StocksList(
@SerializedName("stocks")
val stocks: List<Stocks>
)
соответсвенно, класс Stocks тоже надо создать со всеми параметрами из gson, которые тебе нужны
и возвращай в api интерфейсе своём при запросе именно этот класс обёртки, соответсвенно, а не списки, строки и прочее
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
Всем привет!
Подскажите как правильно юзать Cicerone в связке с ViewPager2?
Я имею ввиду что в Cicerone мы создаем навигатор, прокидываем в него fragmentManager активности, и дальше как бы он начинает собой представлять fragmentManager и все операции по работе с фрагментами ведутся через роутер. И ViewPager2 на вход принимает fragmentManager, причем попадая в него все фрагменты сразу выполняют колбэки ЖЦ вплоть до onViewCreated (включительно).
Можно ли на onBackPressed повесить возврат к предыдущей позиции ViewPager2? И нормально ли вообще Cicerone и ViewPager2 юзать вместе?
источник

AS

Artem Slinkin in StartAndroid Ru Chat
1. viewpager отдельно от ciceroneсам создаёт и обрабатывает свои фрагменты (возможно, можно создать свой cicerone-навигатор отдельно для viewpager, но я не пробовал)
2. на onBackPressed можно "повесить" что угодно программно
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
2 - я прекрасно понимаю
1 - Мне кажется это неким концептуальным конфликтом передавать fragmentManager и AppNavigator'у и ViewPager'у, которые к тому же по разному с фрагментами общаются.
источник

AS

Artem Slinkin in StartAndroid Ru Chat
viewpager положи в отдельный фрагмент. тогда ему ты будешь отдавать childfragmentmanager
источник

AS

Artem Slinkin in StartAndroid Ru Chat
cicerone работает с сущностью "экран" (Screen) ViewPager в отдельном фрагменте = экран. Как и любой другой фрагмент с чайлдами - сам в связке с cicerone обрабатывает своих детей. я так это вижу
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
Хорошо, а если внутри ViewPager мне нужно будет обрабатывать chain экранов и сохранять определенный стек экранов для каждой позиции ViewPager?
источник

AS

Artem Slinkin in StartAndroid Ru Chat
childfragmentmanager прекрасно с эти справится. но я чисто теоретически говорю. если найдешь изящнее  решение с cicerone -  я бы тоже хотел его знать
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
Грубо говоря если каждый child-фрагмент - это первый в цепочке фрагментов, предназначенных для каждой позиции ViewPager
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
ага понял
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
т.е. делаем активность,в ней контейнер, в него помещаем фрагмент, во фрагменте на весь экран ViewPager, которому на вход передаем childFragmentManager, так?
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
Еще один вопрос из области навигации тогда - как достукиваться из child-фрагмента до onBackPressed активности?
источник

AS

Artem Slinkin in StartAndroid Ru Chat
весишь на фрагменты, которые хотят обабатывать onBack  интерфейс

interface OnBackPressed {
   /**
    * @return true - if the it hook processing
    * false - to allow normal processing to proceed
    */
   fun onBackPressed(): Boolean
}

далее в активити на onBack проверяешь активный фрагмент  имплементит ли он OnBackPressed и обрабатывает ли сам onBack. если фрагмент имплементит - опрашивает свой  активный чайлд и так рекурсивно
источник

В

Виктор in StartAndroid Ru Chat
Я лично сделал в общей VM StateFlow, на который подписан фрагмент. В его коллекторе дергаю нужные действия. В onBackPressed() активити проверяю destination, который вызвал клик, и при определенном фрагменте посылаю данные в StateFlow.
Но вариант выше, думаю, правильнее. Просто у меня специфичная логика есть, поэтому не юзаю интерфейс.
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
хм, интересный вариант.
источник

РХ

Руслан Хафизов... in StartAndroid Ru Chat
т.е активность видит и child-фрагменты своих фрагментов?
источник

AS

Artem Slinkin in StartAndroid Ru Chat
нет
источник

AS

Artem Slinkin in StartAndroid Ru Chat
по цепочке каждый спрашивает у своего чайлда
Activity-> WithTabsFragment -> ViewPager-> ActiveTabFragment -> ActiveTabFragmentChild
источник