В настоящее время у меня есть основное действие, в котором есть несколько кнопок, ведущих к другим экранам, которые позволят пользователю создать ряд критериев поиска. Критерии поиска возвращаются к основному виду деятельности с помощью дополнительных функций.
вспомогательные действия запускаются с помощью StartActivityForResult, а затем, когда пользователь сделал выбор, я вызываю finish(), чтобы вернуться на главный экран.
Однако теперь я хочу сохранить вспомогательные действия в памяти, чтобы пользователь мог вернуться, посмотреть, что они ввели, и настроить критерии поиска, а не повторно вводить его с нуля. Как я могу вернуться к своей основной деятельности, не потеряв состояние суб-активности?
Благодаря,
м
Из вашего описания видно, что основная активность получает данные из всех под-действий. Похоже, что этих данных достаточно, чтобы восстановить состояние каждой субактивности.
Вы можете начать суб-действие с уже известными критериями поиска в Intent
. Поэтому каждый суб-actvitiy может восстановить свое состояние от намерения onCreate()
.
Вот последовательность событий:
Таким образом, на шаге 4 Основная активность передаст состояние, полученное на шаге 3.
Юо должен использовать флаги намерений андроида. Используйте флаг FLAG_ACTIVITY_REORDER_TO_FRONT
Если он задан в Intent, переданном Context.startActivity(), этот флаг приведет к тому, что запущенная активность будет перенесена в стек стека задач, если она уже запущена.
Например, рассмотрим задачу, состоящую из четырех действий: A, B, C, D. Если D вызывает startActivity() с намерением, который разрешает компонент активности B, тогда B будет перенесен в переднюю часть стека истории, с этим результирующим порядком: A, C, D, B. Этот флаг будет игнорироваться, если также указан FLAG_ACTIVITY_CLEAR_TOP.
Альтернативным способом передачи данных между действиями будет расширение класса Application. Поэтому в каждом действии вы можете получить доступ к нему, используя
MyApplication myApp = (MyApplication) getApplicationContext();
Вы можете установить критерии поиска для атрибута в этом классе. Вы можете получить доступ к контексту приложения из любой активности.