2012-03-27 4 views
1

Пример: У меня есть приложение для Android с 3 деятельности, которая имеет следующие модели поведения:Как свернуть «детские действия»?

A (Home) -> B -> C 

Activity A launches Activity B 
Activity B launches Activity C 

When user is on Activity B and they hit the Back button, it takes them Activity A 
When user is on Activity C and they hit the Back button, it takes them Activity B 

То, что я хотел бы, когда пользователь находится на активность C, если они попали на кнопку «Мои Корневая активность», это будет перенесите их в Activity A без добавления нового экземпляра Activity A в задний стек.

Так что я не хочу иметь:

1) A 
2) A-B 
3) A-B-C 
4) A-B-C-A 

То, что я хотел бы это:

1) A 
2) A-B 
3) A-B-C 
4) A 

Как я могу это сделать?

ответ

0

У меня каждый ребенок активность расширить базовую деятельность. В базовом действии я определил onActivityResult(), который наложит финиш(), если активность в верхней части стека задает конкретный resultCode. Таким образом, если они нажмут кнопку «Моя корневая активность» в действии C, она будет рекурсивно свернуться к Activity A. Кнопка «Назад» поддерживает ее функциональность.

Это редкий сценарий, как я использовал бы «singleTask», но запуск Activity A включает в себя перегрузочное это зависимости, которые я не хочу пару активности C.

0

EDIT: Вы можете добавить «singleTaks» или «SingleInstance» вашей деятельности в файле манифеста и реализовать метод onNewIntent().

«singleTaks»

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

«SingleInstance»

То же, что «singleTask», за исключением того, что система не запускать любые другие виды деятельности, в задачу держащего экземпляр. Деятельность всегда является единственным и единственным членом ее задачи.

Заканчивать this link

+0

Nice, но если я на операции C, я не будет возвращаться к Activity B -> «Когда пользователь находится в действии C, и они нажимают кнопку« Назад », это берет на себя активность B» –

+0

о, извините, вам больше не нужна деятельность B – bughi

1

Заканчивать намерение стека машины!

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

+0

Вы должны обязательно прочитать и понять этот документ. Если вы в спешке, то вы ищете 'FLAG_ACTIVITY_CLEAR_TOP'. – sastraxi

+0

Я потратил час, читая этот документ, и там ничего нет в том, что я использовал. Самое близкое было «singleTask». Я хотел бы, чтобы Activity A сконфигурировал использование singleTask, и когда они добираются до Activity C и нажимают кнопку «Моя корневая активность», она будет делать что-то вроде «finishTask()» или что-то в этом роде, чтобы ребенок B и C получал удален. –

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