Как управлять несколькими стеками Activity в приложении Android, как если бы вы работали в iOS с несколькими UINavigationControllers в UITabBarController? - PullRequest
4 голосов
/ 07 июля 2011

Довольно распространенная модель для приложений iOS, кажется, имеет один UITabBarController, где каждая вкладка по существу содержит UINavigationController, то есть стек контроллеров, и нажатие вкладки переключает на вершину соответствующего стека.Можно ли получить такое же поведение на Android без большого количества пользовательского кода?(Примечание: я использую меню вместо вкладок на Android).

После прочтения http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html самое близкое, что я могу видеть, - это иметь несколько задач, каждая из которых представляет стек (сродни UINavigationController),и использовать FLAG_ACTIVITY_NEW_TASK для переключения на другую задачу / стек.Когда я переключаюсь, есть ли способ перейти прямо к вершине стека, или мне нужно самому сохранять этот кусок состояния?

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

Единственное другое решение, которое я могу себе представить, это иметь пустышкуАктивность в стеке, чтобы вытолкнуть DummyActivityN по существу прямо перед тем, как я переключаюсь из N-го стека, и, при переключении в M-й стек, запустить действие DummyActivityM с FLAG_ACTIVITY_NEW_TASK, а затем сразу же завершить DummyActivityM ().Одна последняя проблема: когда я перемещаюсь к нижней части одного из стеков с помощью кнопки «Назад», я хотел бы нажать кнопку «Назад» еще раз и НЕ переходить к другому стеку / задаче.Но это, кажется, легко преодолеть, запустив Intent для перехода на домашний экран;есть что-нибудь лучше?

1 Ответ

0 голосов
/ 07 июля 2011

Если я правильно понял вашу проблему, если вы добавите этот параметр в объявления активности в AndroidManifest.xml, действия, запускаемые вашим пользовательским меню, будут создаваться только один раз - сохраняя свое состояние при перемещении по вкладкам.

android:launchMode="singleTask" 

Надеюсь, это поможет,

Лучший,

-sekran

...