Выбор ответа Senior Навигация обновлено
Вернуть результат на предыдущий экран
Вопрос
Экран выбора города должен вернуть выбранный город на экран формы. Какой способ поддерживает Navigation?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Записать значение в previousBackStackEntry?.savedStateHandle и прочитать на форме. У каждой записи back stack есть свой SavedStateHandle.
Варианты ответа
startActivityForResultс кодом запроса и обработкой вonActivityResult- Записать значение в
previousBackStackEntry?.savedStateHandleи прочитать на формеправильный ответ - Положить город в глобальную переменную в
objectи прочитать её вonResume - Передать колбэк
onCitySelectedв аргументах навигации к экрану выбора
Разбор
У каждой записи back stack есть свой SavedStateHandle. Экран выбора кладёт результат в handle предыдущей записи и делает popBackStack(), а форма читает его через getStateFlow. Значение переживает и смерть процесса. Колбэки нельзя положить в аргументы: они не сериализуются. startActivityForResult устарел и предназначен для Activity. Общая ViewModel графа тоже рабочий вариант.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.