Альтернативы finish () для удаления Activity из вида. - PullRequest
1 голос
/ 06 сентября 2011

В настоящее время у меня есть основной вид деятельности, в котором есть несколько кнопок, ведущих на другие экраны, которые позволят пользователю создать ряд критериев поиска. Критерии поиска передаются обратно в основной вид деятельности через дополнения по назначению.

вспомогательные действия начинаются с StartActivityForResult, а затем, когда пользователь сделал выбор, я вызываю finish (), чтобы вернуться к главному экрану.

Однако теперь я хочу сохранить подзадачи в памяти, чтобы пользователь мог вернуться назад, посмотреть, что он ввел, и изменить критерии поиска, а не вводить их заново с нуля. Как я могу вернуться к своей основной деятельности, не теряя состояние суб активности?

Спасибо,

м

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Из вашего описания похоже, что основной вид деятельности получает данные от всех подвидов деятельности.Также кажется, что этих данных достаточно для восстановления состояния каждой субактивности.

Вы можете запустить субактивности с уже известными критериями поиска в Intent.Таким образом, каждый sub-actvitiy может восстановить свое состояние из намерения на onCreate().

Вот последовательность событий:

  1. Приложение запускается, запускается Main Activity.
  2. Пользователь нажимает кнопку: Основная активность -> Намерение ( пусто ) -> Подоперация
  3. Пользователь выполнил критерии поиска:
    Возвращает подоперация -> Намерение ( поисккритерии ) -> Основная деятельность
  4. Пользователь нажимает кнопку: Основная деятельность -> Намерение ( критерии поиска ) -> Подоперация

И так далеешаг 4 Основное действие передало бы состояние, полученное на шаге 3.

1 голос
/ 06 сентября 2011

Юо следует использовать флаги намерений Android. Используйте флаг 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();

Вы можете установить критерии поиска для атрибута в этом классе. Вы можете получить доступ к контексту приложения из любого действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...