Три стека активности - PullRequest
       16

Три стека активности

1 голос
/ 13 апреля 2011

Я пытаюсь понять, как реализовать интересную концепцию.

Предположим, в нижней части моего приложения есть панель с 3 кнопками. Мы назовем их A, B, C. Я хочу, чтобы вы рассматривали их как 3 области приложения, каждая со своим стеком Activity.

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

Теперь, находясь на экране сведений, я нажимаю кнопку C внизу, и я попадаю на главный экран C.

Если я нажму B ( или нажмите кнопку назад), я хочу, чтобы пользователь перешел на последний экран в стеке B Activity, который является экраном сведений, а not основной экран B.

Возможно ли это? Если я правильно понимаю, у меня должно быть 3 задания, 1 для A, 1 для B и 1 для C, да? Что еще мне нужно сделать?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2011

Конечно, это возможно и просто реализовать. Но вы должны прочитать this , чтобы понять, как это реализовать.

У вас есть 3 корневых действия: A_main, B_main, C_main. Каждое действие должно начинать новую задачу. Для этого вам нужно:

  1. В вашем манифесте укажите для них различные сродства:

    активность android: name = ". A_main" android: taskAffinity = ". A"

    активность android: name = ". B_main" android: taskAffinity = ". B" />

  2. Чтобы запустить (переключить) задачу, запустите новое намерение, используя флаги (вы можете использовать ApplicationContext):

    private static final int ROOT_INTENT_FLAG = 
        Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
    

Чтобы предоставить пользователю возможность переключаться между задачами, которые вы можете использовать, например, Android-меню. Если вы хотите очистить задачу - просто добавьте флаг Intent.FLAG_ACTIVITY_CLEAR_TOP

И ... вам нужна некоторая LauncherActivity, которая будет запущена при запуске вашего приложения. Это действие должно восстановить последнее посещенное задание и завершиться само собой. Для восстановления - просто используйте намерение с флагами сверху (пункт 2).

0 голосов
/ 13 апреля 2011

На самом деле описанный вами сценарий состоит только из стека активности ONE .То, сколько стеков активности будет существовать, фактически контролируется ОС Android, мы можем делать все возможное только по правилам.

Согласно описанию, история навигации равна B_main -> B_details -> C_main, после BACK - B_main -> B_details.Если три кнопки реализованы во всех этих Activity с (что можно сделать, настроив некоторую панель кнопок и включив ее в файлы макетов), то действительно только один стек.

...