2013-03-12 4 views
23

У меня есть Activity_1 после многих шагов, скажемВозобновить активность вместо исходных, если уже существует в задней стеке

Activity_2>Activity_3 .... в некоторых Activity_n я изменить некоторые данные, относящиеся к Activity_1 и позвоните по телефону

Intent intent = new Intent(Activity_n.this, Activity_1.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Чтобы обновить контент. Но позже я могу вернуться к Activity_1, где я начал, у которого есть старые данные.

Вместо этого я хочу, чтобы начальный получил номер onResume(), используя вышеуказанный код. Или уместно Флага

FLAG_ACTIVITY_CLEAR_TOP

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

Это»ВАЗы - говорят документы, но не то, что я получаю.

ответ

32

Вы можете добавить эти две строки и попробовать

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

написать в вашем файле манифеста внутри деятельности

<activity 
    android:name=".SettingsActivity" 
    android:launchMode="singleInstance" 
    android:screenOrientation="portrait" > 
</activity> 

«singleTask» и «SingleInstance» деятельность может начаться только задачу. Они всегда находятся в корне стека активности. Кроме того, устройство может удерживать только один экземпляр активности за один раз - только одна такая задача.

Вы можете использовать SingleTask или SingleInstance

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

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

См эту ссылку http://developer.android.com/guide/topics/manifest/activity-element.html

+0

Но это ** Фрагмент ** Я использую. До сих пор я использовал 'onResume()' из ** Фрагмента **. Что не содержит ничего похожего на 'onNewIntent()'. Но нет способа очистить весь задний стек и вызвать новую ** Activity ** –

+0

См. Я добавил две строки, которые вы можете попробовать таким образом – Nirali

+0

Спасибо это сработало. –

4

Резюме Activity из backstack, если существует или создать новый, если не

android:launchMode="singleTask" 

добавить эту строку в AndroidManifest вашего приложения. xml и начать работу с нормального Intent.

+0

Где я должен это писать? – GabrielOshiro

+0

В manifest.xml – AhmedNTS

+2

Вы должны добавить это к своему ответу, нет? – GabrielOshiro

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