2012-04-07 2 views
1

Скажите, пожалуйста, кто-нибудь, как убить предыдущую сложную активность. Мое требование такое, как Позвольте мне переместиться из операции A ----> B -----> C --- ---> D -----> E Тогда стек активность будет EDCBA Сейчас я нахожусь в E если моя вся работа сделана, то я перехожу к деятельности B использованиемКак убить активность стека

startActivity(intent); 

this.finish(); 

этот код будет убит только E активность, но я хочу убить C D активность тоже. как я могу это сделать. спасибо.

ответ

6

Одним из решений является вызов активность [B] с флагом FLAG_ACTIVITY_CLEAR_TOP

Intent b = new Intent(this,B.class); 
b.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(b); 
this.finish(); 

Это убьет C D E

+0

Будет ли создать новый экземпляр активность B или просто принести старый на фронт? –

+0

@ АндроидКиллер просматривает http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP –

2

вы должны передать контекст деятельности в intet, так что вы можете назвать отделку на активность.

также Goo идея была бы начать деятельность с использованием startActivityForResult(Intent, int).

Где int является кодом активности вы начинаете.

позже вы можете позвонить finishActivity(int requestCode), который убьет действие для кода, который вы предоставили. У вас могут быть коды (id) для действий в вашем strings.XML.

http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, Int)

3
Intent intent = new Intent(this, B.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
    startActivity(intent); 
Смежные вопросы