V
ну реплейс вызовет не только паузу
V
а add почему-то не добавляет новый наверх
V
есть вариант с hide, но тогда при пересоздании активити видимость слетает
V
или сверху держать новый контейнер
V
у меня там фрагмент из сети качает, график большой рисует, рестарт долго будет делаться
V
а сверху хочу настройки показать
Dug
Мне кажется тебе стоит попытаться разобраться, почему не добавляет. Что-то не так делаешь мб? Не может же оно взять и просто не хотеть добавлятт
Tishka17
По крайней мере качать
V
ну на стеке вроде эта проблема не решена, может я плохо искал, в старом делал через hide, но слишком сложно получилось
V
качает не фрагмент, но как минимум отрисовка
V
он добавляется, но старый фрагмент остается сверху
V
есть еще один неясный для меня вопрос, если я буду хранить ссылки на фрагменты, то после пересоздания активити эти ссылки уже обнулятся? или будут хранить ссылки на старые фрагменты, а во фрагмент менеджере будут созданы новые фрагменты?
Mike
другое дело, что у фрагментов есть стабильные id
V
после пересоздания активити всё, что не retain, будет пересоздано
то есть извлечь их из менеджера по этим айди? и можно узнать добавлены ли они вообще
V
Да. Можно.
ок, спасибо!
V
ну тогда можно attach/ detach делать каждый раз, чтобы в контейнере отображался только последний фрагмент. Хотя странно конечно, что они не в стеке
Tishka17
после пересоздания активити всё, что не retain, будет пересоздано
пересоздание активити бывает с пересозданием всего приложения
Elron
ретаин фрагменты лучше добавлять по тегу, а не по ид
Tishka17
ретейны не сохранятся
V
пересоздание активити бывает с пересозданием всего приложения
в этом случае я бы сначала проверил, есть ли фрагменты во фрагмент менеджере, если есть, то ссылку на них проставлял, иначе бы создавал новые
Mike
ретейны не сохранятся
Инстансы, конечно, пересоздаются, но по тегу можно их найти)
V
но у меня все-таки впечатление, что мой подход не правильный. Видимо фрагменты должы быть легкими, и реплейс не должен быть проблемой. Данные надо хранить в retain. Но что делать если 1) отрисовка сложная или визуальную часть надо сохранить 2) фрагмент чужой, я ему могу сказать только старт и стоп, причем пока приложение открыто, он не должен останавливаться, поэтому для таких случаев replace не подходит
V
сорри за мгоно букв)
Глеб
как в CollapsingToolbarLayout задать разный цвет иконок при сворачивании разворачивании
Tishka17
ИМХО, 1. если фрагмент не видим, он не должен ничего делать 2. Если отрисовка сложная стоит подумать о кэшировании или вынесении рендеринга из фрагмента в специальный сервис
V
а если у меня данные во фрагменте, активити пересоздалось, ссылка у меня на старый фрагмент, а создался новый на замену - как лучше в такой ситуации поступить?
Artem
используйте архитектурные компоненты и состояния, там все эти проблемы решены
V
ну вот я добавил фрагмент, надо в нем методы вызвать, что-то ему передать, поэтому храню ссылку на него
Artem
https://developer.android.com/topic/libraries/architecture/
V
ну после пересоздания же не будет ссылки
я так понимаю, могу ошибаться, что если убьется только вью, то сам объект активити останется, будут только методы лайфцикла вызваны
Mike
https://developer.android.com/topic/libraries/architecture/
Эти поделки я видел, толку в них?
Valery
Привет всем! Проблема с deep link на xiomi и nexus я создал такой intent-filter https://monosnap.com/file/kbtdEqGTrhYoTXaOnv9cUJbm7qZeYD при клике на эту ссылку https://allo.ua на one plus и samsung предлагает открыть приложение, а на xiomi и nexus сразу же открывается сайт на сколько я понмиаю, на одних устройствах этот интент фильтр отрабатывает, а на некоторых нет кто-нибудь встречался с токой проблемой?
Artem
все что описывает состояние должно жить в вьюмодел
Artem
фрагмент и активити только восстанавливает состояние из данных
Mike
все что описывает состояние должно жить в вьюмодел
Как это решает проблему? Технически это тот же retain-фрагмент.
Andrey
Всем привет. Подскажите в таком вопросе: я во fragment передаю объект с большим количеством полей. Но для отображения во фрагменте мне нужно всего 3 поля из этого объекта. Где лучше заказать mapper (если я правильно делаю)? использую MVP.
Artem
не совсем
Artem
это ретэйн дата
Artem
а фрагмент лишь представление
V
Спасибо, посмотрю
Artem
и можешь его пересоздать его как угодно
Mike
а фрагмент лишь представление
Я про техническую часть, не про архитектурную.
Kanstantsin
всем привет, падает эксепшен при работе с корутинами в android studio, прилага крэшится, но в Logcat я не вижу его, в чем может быть дело..
Artem
Я про техническую часть, не про архитектурную.
если более развернуто конкретизируешь вопрос я отвечу, пока что я не понимаю что ты хочешь
Еламан
Добрый день. Как получить данные которые приходят пользователю из сервера?
Mike
если более развернуто конкретизируешь вопрос я отвечу, пока что я не понимаю что ты хочешь
Хочу понять, как ViewModel поможет решить проблему, если её жизненный цикл равен жизненному циклу retain-фрагмента.
V
это ретэйн дата
то есть предложение данные хранить в ретейн фрагменте, а фрагменты использовать только для отображения?
V
то есть предложение данные хранить в ретейн фрагменте, а фрагменты использовать только для отображения?
тогда еще нужен некий менеджер по доступу к этим данным, чтобы новые фрагменты могли читать и знали откуда, статик какой-нибудь?
Artem
Хочу понять, как ViewModel поможет решить проблему, если её жизненный цикл равен жизненному циклу retain-фрагмента.
Технически в плане реализации это одно и тоже, да. Но по смыслу эти объекты должны выполнять разные задачи. С таким же успехом можно хранить все данные в Application
Artem
но это не значит что это правильно
Artem
В ViewModel ты можешь держать данные, используя LiveData предоставлять подписчикам данные по последнему состоянию
Artem
и соотв. тебе совершенно не нужно изворачиваться в View (activity или fragment) пытаясь как-то сохранять состояния, переживать множество ситуаций когда что-то пошло не так
Artem
то есть предложение данные хранить в ретейн фрагменте, а фрагменты использовать только для отображения?
Данные во ViewModel на уровне активити, фрагмент (не ретейн) чисто для отображения данные, цепляет ViewModel и восстанавливает состояние
Mike
только вот ViewModel не умеет сохранять состояние при пересоздании процесса
Artem
Иш чего захотел) Оно и не должно.
Artem
Те данные, что должны переживать такую ситуацию должны жить в перманентном хранилище
Еламан
Это слишком неконкретно.
Хочу получить для конкретного пользователя данные, которые приходят ему при вызове некого апи. Пользователь заходит под своим аккаунтом. У каждого пользователя свои данные. Теперь хочу когда мне нужный пользователь зайдет в приложение и откроется окно который вызовет некий апи, получить результат этого вызова
Mike
они неплохо себя чувствуют и в savedInstanceState, а вот у вьюмодели такой фичи нет
Еламан
Ну сделай этот вызов и получи результат.
А как сделать если нет доступа
Mike
А как сделать если нет доступа
Никак, если это был вопрос.
Artem
только вот savedInstanceState может держать небольшое количество данных, и ипользовать его нужно только для сторинга данных полей ввода
Еламан
Не могу зайти под этим юзером
Artem
https://medium.com/google-developers/viewmodels-persistence-onsaveinstancestate-restoring-ui-state-and-loaders-fc7cc4a6c090
Artem
собственно годная статья на тему вопроса
Artem
ViewModel вообще по сути некий объект логики экрана, не зависящий от изменений конфигурации
Artem
его задача например выполнять запрос, менять свое состояние и провайдить его во View
Isomjon
А Откуда узнали что он не закрыт?