Kanstantsin
с указанием сколько будет колонок
Kanstantsin
и оно само будет делить
Mike
верно — отвечать на сообщения, а не пересылать их)
Никита
Работаю с фрагментами. Насколько адекватно не создавать каждый раз фрагменты, а делать их final. Для смены фрагментов использовать: fragmentManager.beginTransaction().hide(activeFragment).show(homeFragment).commit(); Просто у меня есть еще свой стэк, в который помещаются фрагменты друг за другом, чтобы потом можно делать backStack при нажатии кнопки назад. И получается, что в какой-то момент делаю backStack, а фрагмент как будто не меняется, а остается этот же. Хотя по логам видно, что стэк на единицу уменьшился и все ок. Может я чего-то не догоняю и нужно вызвать какой-то метод для перерисовки?
Mike
почему он их пересоздает, если в активити храню их как константы?
потому что он не догадывается о том, что ты их хранишь
Никита
потому что он не догадывается о том, что ты их хранишь
смотри, я еще в onCreate в активити делаю для всех фрагментов вот так: fragmentManager.beginTransaction().add(R.id.main_container, homeFragment, "1").hide(homeFragment).commit(); Тип помещаю их заранее в буфер фрагмент менеджера. Разве все равно фрагменты пересоздадуться?
Никита
да, и менеджер целиком может пересоздаться
даже если приложение сингл активити?
Mike
даже если приложение сингл активити?
да, активити же всё равно пересоздаётся
Никита
да, активити же всё равно пересоздаётся
ну так оно у меня одно. При запуске приложения работает только одно активити и все. По сути, во время работы приложения активити у меня не пересоздается (исключаем переворот экрана, я залочил переворот).
Сергій
именно с on -> off
Kanstantsin
механизм фрагментов как раз и создан же чтобы они пересоздавали view каждый раз
Mike
еее, отличный способ протестить
Сергій
но будет пересоздание процесса
Kanstantsin
а не хранили как activity все свои view
Kanstantsin
я когда в прилажке одной делал что-то типо отдельного стэка для каждого таба, сначала хотел так тоже делать, пришел к выводу что так делать не надо, и нашел решение в cicerone
Kanstantsin
но это совсем другая история )
Никита
кароч, у меня вот в стэке лежит 4 экрана. Перехожу назад на 3 экран - все ок. Перехову назад на второй - все херово, как будто верстка остается от 3 экрана, хотя по логам видно, что я уже на втором
Дмитрий
ребята тут умеет кто нибудь скачивать контент из приложения?
Дмитрий
нужна помощь
Kanstantsin
а я совал чайлд-фрагменты в айтемы вьюпейджера)
ну я планировал хранить в каждом табе stack с фрагментами, но потом нашел такую же реализацию в cicerone, только уже через их штуки, мне показалось это хорошим вариантом, вообщем в приложении оно так и заработало, и ушло в релиз уже )
Kanstantsin
похожая ситуация раньше была когда какой-то из фрагментов не было в стэке, и при бэке он не убирался из контейнера(об этой транзакции просто не знали)
Kanstantsin
приходилось при бэке, руками всегда ещё контейнер чистить
Kanstantsin
чтобы даже всё что там не было удалялось
Kanstantsin
я не знаю что это за методы
Kanstantsin
начнем с того что их нету вроде у fragmentManager
Kanstantsin
или есть ?
Kanstantsin
)
Никита
есть
Никита
оло
Kanstantsin
обычно просто replace юзал
Kanstantsin
replace + addToBackStack
Kanstantsin
и транзакция в бэкстеке, по back тоже всё ок работает
Kanstantsin
поэтому сорри, я не знаю что это за методы и что они делают, тогда советую глянуть что внутри них происходит )
Alexey
так я как бы не убираю, а просто делаю show/hide на каждом фрагменте
почему бы все в одном фрагменте на вьюхах не сделать?
Никита
почему бы все в одном фрагменте на вьюхах не сделать?
эммм... зачем? мне для каждого экрана шо менять верстку во фрагменте?
Alexey
один гигантский лэйаут с тысячами инклюдов
Никита
Kanstantsin
так а в чем проблема поменять show/hide на какой replace
Alexey
Ну да, как ты типа)
Kanstantsin
это быстро и работоспособно, или вообще взять какой cicerone для навигации, посмотреть туда
Kanstantsin
взять что оттуда, если не хотеть юзать либу
Kanstantsin
и кстати методы назваются showFragment и hideFragment ? а ты глядел в доку ? что там написано, что эти методы делают, мне кажется ты ожидаешь другое поведение, нежели описано в доке этих методов ещё, залез сейчас в доку почитал про них..
Kanstantsin
ну как мы видим работает оно так себе )
Никита
так а в чем проблема поменять show/hide на какой replace
состояние фрагмента не будет сохранаться. Тогда надо будет использовать какой-нибудь ViewModel для каждого фрагмента
Kanstantsin
при переходе обратно по back ?
Kanstantsin
ну вообще так и должно быть, при переходе по back каждый фрагмент пересоздает view, и нужно данные правильно вернуть на пере-созданные view
Kanstantsin
и для этого необязательно использовать ViewModel
Никита
и для этого необязательно использовать ViewModel
а что? бандл? По моему самое оптимальное как раз ViewModel
Kanstantsin
для простых ситуаций чтобы протестить можно и через филды у фрагмента это решить(инстанс фрагмента не пересоздается, только view) - если предусматривать ситуацию что в принципе любой экран может быть пересоздан то тогда или дублировать сохранение данные в бд, или просто в памяти через какие ViewModel или ещё как иначе
Kanstantsin
но в любом случае блочить пересоздание view у фрагмента для сохранения state - это точно нелучший вариант
Kanstantsin
тем более от ситуации когда система убила активити с вашим фрагментов и при переходе обратно на него будет всё равно пересоздание view и это уже точно вас не спасает
Kanstantsin
а что? бандл? По моему самое оптимальное как раз ViewModel
но в целом наверное ViewModel оптимальнее как раз, лучше сразу закладывать ситуацию что UI может быть пересоздан и чем это может грозить приложению
Ivan
Ребят уже полдня бьюсь: почему у меня при Completable.mergeArray всегда success, хотя оба аругмента fail?
Ivansuper
Потому что белый фон в IDE
Ivansuper
(простите)
Ivan
Потому что белый фон в IDE
мне с белым удобно
Ivansuper
мне с белым удобно
Я понимаю. Просто прикольнулся. Сам белым пользовался пока не перешел на черный тупо из за проблем зрения
Kota
Может там два пустых массива?
Ivan
Извиняюсь, что за метод сравнения?
Kota
ну в мерж, не сравнение конечно)
Ivan
два Completable и приходят, которые на скрине выше.
Ivan
Смысл в том, что я это запускаю при выключенном интерент в каждом completable срабатывает onError
Ivan
а вот после merge всё равно onSuccess