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