2013-07-19 2 views
0

У меня есть 3 мероприятия. Из третьего действия мне нужно вернуться к 1-му действию при нажатии кнопки GUI. Я знаю, что могу нажать кнопку «физический» назад 2 раза, чтобы сделать это, но это не вариант. Итак, есть ли способ показать 1-ю деятельность, БЕЗ СОЗДАНИЯ НОВОЙ ИНСТАНЦИИ? Я могу передать экземпляр 1-го действия в третью деятельность, без проблем.как перейти к определенной деятельности?

Пожалуйста, помогите

+1

использование навигатор выдвижной ящик в сочетании с панелью действий. http://developer.android.com/design/patterns/navigation.html – Raghunandan

ответ

1

Используйте FLAG_ACTIVITY_CLEAR_TOP в своем намерении.

Из документации:

Например, рассмотрим задачу, состоящую из мероприятий: A, B, C, D. Если D называет startActivity() с Intent, устраняющее компоненту активности B , то с и D будут закончены и в получают заданную Намерение, в результате чего в стеке теперь: а, В.

Применение:

Intent intent = new Intent(getBaseContext(), FirstActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

В каком классе следует добавить это? В первом или третьем? Я добавил к третьему, похоже, что не работает –

+0

Третье действие, указывающее на 'FirstActivity.class' – nickaknudson

+0

В документации объясняется, что именно вы пытаетесь сделать (см. Править). Если он не работает, вы должны делать что-то еще неправильно. – nickaknudson

0
Intent intent = new Intent(src_ctxt, dest.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
src_ctxt.startActivity(intent); 

Это должно сделать это

0

Я думаю, что вам нужно, чтобы сделать вашу активность B SingleInstance, что, если он уже создать не хотите, чтобы создать снова, то есть launch mode of the activity может быть определена в явном андроида: launchMode, который определяет, как деятельность будет установлена.

в вашем случае использования андроида: launchMode = "SingleInstance"

или

Вы можете использовать флаг Intent.FLAG_ACTIVITY_NEW_TASK. Если активность уже запущена, это приведет к тому, что на передний план вместо создания нового действия.

+0

«Вы можете использовать флаг Intent.FLAG_ACTIVITY_NEW_TASK ...» не правда ...;) – Trinimon

+0

Этот флаг будет активировать активность как начало новой задачи. иначе вы также можете использовать FLAG_ACTIVITY_SINGLE_TOP, который будет загружать активность, если он находится в стеке истории. –