как настроить стек навигации на Android

#android #android-activity #activity-stack

#Android #android-активность #активность-стек

Вопрос:

У меня такая ситуация

Я использую одно действие, но с разными параметрами, поэтому я предполагаю, что это отдельные действия

Это последовательность навигации

A-B-C-D-E-F, и в F у меня есть представление, которое приводит меня к C, а иногда и B. Я хочу, чтобы при нажатии кнопки «Назад» действие должно приводить меня к моему стеку, а не к системному стеку, или когда я возвращаюсь к более раннемуstack it должен показывать действия, а не подталкивать их. Как я могу это сделать?

Примечание: я использую одно действие, поэтому мне нужно использовать стандартный режим запуска. Что мне нужно, так это иметь возможность удалять экземпляры активности из стека в место, куда я перемещаюсь

Ответ №1:

Используйте флаги намерений и режим запуска — посмотрите на это бесплатное приложение, которое поможет вам легко разобраться, что делают разные флаги и режимы: https://market.android.com/details?id=com.novoda.demos.activitylaunchmode

Смотрите эту страницу для получения дополнительной справки: http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

Комментарии:

1. Спасибо за ваш ответ, Мартин, но я думаю, что моя ситуация немного отличается. Мои действия не являются отдельными, это одни и те же действия. У меня есть класс MyActivity, и я каждый раз перехожу к другому экземпляру MyActivity. Поэтому, когда я использую флаги режима запуска или намерения, это не работает. Мне нужно сделать что-то вроде этого «всплывающие действия n из верхней части стека», не запуская ни одного из них

2. Я не думаю, что есть способ динамически управлять стеком с точки зрения возможности выполнения n действий — лучше всего посмотреть на флаги намерений — они определяются во время выполнения, а не в файле манифеста, например, в режимах запуска, — и посмотреть, сможете ли вы разумно решить, как достичьтот же результат с некоторым перспективным планированием?

3. На самом деле я не нашел способа добиться появления стека активности. Как я уже говорил ранее, я работаю над одним действием, поэтому, когда я пытаюсь очистить top, все мои действия отображаются. Я пытаюсь переопределить нажатие обратной клавиши и события onResume, но это кажется очень неестественным

Ответ №2:

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