#android #stack
#Android #стек
Вопрос:
В моем приложении для Android у меня такая ситуация: у меня есть одно действие во всем моем приложении, скажем, MyActivity, оно содержит listview и пользовательские представления внутри него. Действие имеет свойство url, так что для каждого случая загружаются разные данные. Проблема в том, что я не могу использовать встроенный механизм стека Android для обработки навигации. Например, когда я пытаюсь установить флаг CLEAR_TOP, мне это не помогает, я думаю, что он объединяет весь мой стек в одно действие. Я думаю, что я перехожу от A к B, но android думает, что я перехожу от A к A, я не знаю, правильно ли это, но кажется, что так. Мне нужно что-то для управления навигацией. любой, кто создает приложение с помощью одного действия, может помочь мне лучше. Мое приложение представляет собой что-то вроде веб-браузера, спасибо.
Ответ №1:
просто удалите clear_top. когда вы пытаетесь запустить MyActivity из самого себя, Android будет рассматривать это как отдельное действие, таким образом добавляя новый элемент в стек.
Комментарии:
1. также довольно хорошо обрабатывает задний стек, поскольку предыдущая активность с предыдущими данными будет просто возобновлена.
2. спасибо за ваш ответ, но есть некоторые ситуации, в которых мне нужно очистить top, чтобы он мог вернуться куда-то до предыдущего, например, в последовательности a-b-c иногда мне нужен backstack для перехода с c на a, как вы думаете, clear top справится с этим?
3. Я думаю, когда я очищу top, будут очищены оба a и b, что мне нужно, так это удалить b из стека навигации, есть идеи?
4. для этой логики, возможно, вам нужно реализовать / переопределить onBackPressed
Ответ №2:
Вы можете имитировать задний стек, поместив некоторые данные (скажем, ваши URL-адреса), которые помогут вам выделить различные ваши внутренние «действия» в желаемую коллекцию (т. Е. LinkedList).
Затем вам нужно будет переопределить onBackPressed()
метод в вашей деятельности, где вы должны опросить / просмотреть элемент из вашего стека и обновить пользовательский интерфейс. Соответственно, вам нужно будет вставить элемент в свой стек при получении URL-адреса, а также обновить пользовательский интерфейс.