2013-03-19 7 views
7

Mam 4 aktywności Android. Nazwijmy je , B, C, D.Usuń aktywność 2 i 3 z tylnego stosu podczas uruchamiania działalności 4

Normalny przepływ to A => B => C => D. Jednak po wpisaniu D chcę usunąć B i C z tylnego stosu.

Czy można go rozwiązać?

Zauważ, że jeśli użytkownik jest w C i wciska z powrotem, powinny nadal być wyświetlane B!

Edycja: Rozpoczęcie działalności A ponownie z CLEAR_TOP wywołało ponownie na Aktywność A, której nie chcę. Jakieś inne rozwiązania?

Odpowiedz

-1

FLAG_ACTIVITY_CLEAR_TOP wyczyścić stos aktywny, można go używać jak kody poniżej:

intent = new Intent(this, YourActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
StartActivity(intent); 
+0

Dzięki. To było zbyt łatwe :) – Sunkas

+0

Najpierw pomyliłem się przy twojej odpowiedzi. Ale YourActivity jest ** A ** w moim przypadku i wywołane onBackPressed() w Activity ** D **. – Sunkas

+0

Powoduje to, że onCreate jest ponownie wywoływany w działaniu ** A **, którego nie chcę. Chcę pokazać stan, w którym ma być wyświetlany, podobnie jak w przypadku standardowego zachowania po kliknięciu przycisku Wstecz. – Sunkas

3

Wiem, że to stare pytanie, ale ostatnio miałem ten sam problem i nie mogłem znaleźć rozwiązania. Jedynym rozwiązaniem mogłem dostać się do pracy jest nieco hack:

start C z B użyciu startActivityForResult.

Intent intent=new Intent(this,C.class); 
startActivityForResult(intent,REQUEST_CODE); 

aktywności C utwórz przeznaczona do aktywności D i ustawić je w wyniku:

Intent intent=new Intent(this,D.class); 
setResult(RESULT_OK,intent) 
finish(); 

W zadaniu B, wykończenie i rozpocząć intencją zwrócone od aktywności C:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode==REQUEST_CODE) { 
     finish(); 
     startActivity(data); 
    } 
} 

W tym momencie oba działania B i C zostaną zakończone i stos aktywność będzie A => D

Powiązane problemy