2010-01-20 3 views
1

У меня есть следующее:Android: Работа со стеком деятельности

Деятельность A, B, C, D. A и D могут быть доступны в любое время и в любом месте от приложения.

B и C достигается так:

A -> B -> C 

У меня есть следующий случай использования:

Пользователя введенная C (A -> B -> C), то она пошла к D.

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

Нечто подобное A -> B -> C -> D -> (same) C. Но я не хочу терять D из стека активности. После этого, когда она нажимает кнопку «назад», она снова переносится на D.

Возможно ли это и правильно? Какова наилучшая практика?

Если я не объяснил свою ситуацию достаточно ясной, не стесняйтесь задавать вопросы.
10x before,
Danail

ответ

3

К сожалению, вы не можете этого сделать. The documentation says the following:

Обратите внимание, что, когда новый экземпляр деятельности создается для обработки нового намерения, пользователь всегда может нажать кнопку Назад, чтобы вернуться к предыдущему состоянию (к предыдущей деятельности). Но , когда существующий экземпляр Activity обрабатывает новое намерение, пользователь не может нажать клавишу BACK, чтобы вернуться к тому, что делал этот экземпляр, прежде чем новое намерение поступило.

В принципе, вы не можете иметь один и тот же экземпляр Activity C в двух местах в стеке одновременно.

Однако вы можете заставить его выглядеть так, чтобы сделать операцию C сохранить ее переходное состояние в Application object для вашего приложения. Это позволило бы всем экземплярам Activity C делиться состоянием и таким образом отображаться так, как если бы они были одним и тем же экземпляром.

Вам необходимо создать свой собственный подкласс Application, а затем прочитать и записать в него информацию из операции C в onResume() и onPause().

+0

10x! Я попробую. – Danail

+0

на самом деле, просто отправляю это из другого ответа, есть способ сделать это: «Вы можете попробовать это FLAG_ACTIVITY_REORDER_TO_FRONT (документ описывает именно то, что вы хотите) http://developer.android.com/reference/ android/content/Intent.html # FLAG_ACTIVITY_REORDER_TO_FRONT " – Danail

+0

@Danail - Это не совсем то, что вы хотели. Он изменит порядок на «A -> B -> D -> C», что означает, что нажатие назад из Activity D приведет пользователя к 'B'. (Я так думаю, прочитав документацию в любом случае, я не пробовал.) –

Смежные вопросы