onBackPressed + putExtra
В мобильном приложении активити1 имеет поля для заполнения и кнопку, по клику на которую происходит переход в активити2 для выбора определённых данных. Полученные в активити2 данные необходимо передать в активити1. Делаю это с помощью putExtra, но тогда в активити1 очищаются все другие заполненные ранее поля. Есть мысль сделать так, чтобы кнопка подтверждения выбранных данных в активити2 работала как кнопка "Назад" (onBackPressed();). Собственно вопрос, как сделать так, чтобы в активити2 происходил вызов onBackPressed(); и при этом передача данных с помощью putExtra в активити1? Или же такая задача решается как-то по-другому?
Ответы (2 шт):
Ну простой вариант, это передать данные из активити 1 в активити 2 и вернуть их обратно в активити 1. Для этого удобно создать класс контейнер, которой реализует Serializable или Parcelable. putExtra поддерживает их оба. Записывайте в этот контейнер все, что вам нужно и востанавливайте состояние. Не забывайте, что система может потерять intent, когда будет уничтожена. Вам нужно переопределить методы saveInstanceState и onRestoreInstanceState.
P.s. Что бы начать парселизовать объекты, зачастую достаточно класс контейнер пометить аннотацией @Parcelize и реализать интерфейс
@Parcelize
data class Data() : Parcelable
А вообще для сохранения состояния используют viewModel + viewState. Обязательно ознакомтесь или задайте новый вопрос.
Как сказали в комментарии:
- либо юзайте startActivityForResult
- либо https://developer.android.com/training/basics/intents/result
2й вариант проще
А не сохраняются у вас данные, как минимум, вы их не сохраняете в onSaveInstanceState и не восстанавливаете в onCreate или onRestore...
В общем вам нужно разобраться с азами сохранения состояния Почитайте оффициальную доку, там максимально понятно