2011-12-22 9 views
5

Mam Główna działalność A. Istnieją dwa scenariuszeClearing stos w tym działania w różnych zadań

1) uruchamia B. B ma launchmode singleTask i jest uruchamiany z FLAG_ACTIVITY_NEW_TASK. Teraz mam opcję menu w B, która wykonuje operację usuwania i rozpoczyna działanie A.

2) A uruchamia B, który uruchamia C, zawiera również opcję menu do wykonania operacji deletowania.

Chcę, aby A było uruchamiane z usuwaniem stosu w obu scenariuszach, ale działania należące do innego zadania nadal tam są przechowywane Utknąłem, jest sposób na wyczyszczenie stosu.

+0

żadnych informacji o zarządzaniu stos znajduje się pod adresem: http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html Ale warto zwrócić uwagę na 'FLAG_ACTIVITY_CLEAR_TOP' i' clearTaskOnLaunch', chociaż nie zapewnisz dokładnego funkcjonowania, którego pragniesz. – Jakar

+0

dzięki, ale już przeszedłem przez dokumentację nie znalazłem żadnego rozwiązania. – wasaig

+0

FLAG_ACTIVITY_CLEAR_TASK wydaje się być opcją, której nie jestem pewien, czy jest jakakolwiek szansa użycia go na poziomie API 8. – wasaig

Odpowiedz

1

Spróbuj użyć poniższy kod na kasowania opereation zarówno B i C aktywności

Intent intent=new Intent(B.this, A.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
+0

FLAG_ACTIVITY_CLEAR_TOP nie działa w tym przypadku, ponieważ mam dwa różne zadania uruchomione w mojej aplikacji. – wasaig

0

Jeśli mówię o swoim drugim scenariuszu następnie FLAG_ACTIVITY_TOP_CLEAR wyczyści stos ..

A twój stos teraz będzie tylko A zamiast A-B-C-A.

iw drugim przypadku AFAIU problem masz tylko dwa aktywność A i B, więc jeśli chcesz, aby ponownie uruchomić, a następnie po ponownym uruchomieniem ręcznie dokończyć B.

Mam nadzieję, że masz jakiś podstęp.

Inną rzeczą, jeśli masz aktywność z launchmode=SingleTask, możesz użyć flag_activity_brought_to_front.

That will act like 

A-B-C do

0

Dlaczego nie kończąc B i C przed wywołaniem ponownie?

finish(); 
+0

jak możesz wywołać metodę finish() działania B, jeśli jesteś w działaniu A? –

0

Moja metoda nie może spełnić swój cel A to be started with clearing the stack, ale kiedy użytkownik wybrać delet opereation i zacząć od A B ponownie zadania, które obejmują i B zostaną zresetowane.

użyć flagi FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET aby oznaczyć zadanie będzie jasne, gdy są potrzebne przy pierwszym uruchomieniu działalności B z A, a następnie, jeśli użytkownik wybrać delet opereation menu z B lub C, należy ustawić flagę, więc następnym razem od A (a powinien być tryb uruchamiania single_task w manifeście), należy użyć flagi FLAG_ACTIVITY_RESET_TASK_IF_NEEDED zacząć B. ta flaga skasuje B i całą górną część B.

nadzieję, że to pomoże :)

+0

A działa w zadaniu 1, a B i C działają w zadaniu 2. Teraz, gdy zaczynam A od B lub C, myślę, że to, co się dzieje, pozostawia rzeczywiste zadanie i staje się częścią zadania 2. – wasaig

+0

Powinieneś zrobić uruchom tryb A jako 'singleTask' lub ustaw flagę' FLAG_ACTIVITY_NEW_TASK', aby następnym razem, gdy uruchomisz A, przejdzie do istniejącego A. – dreamtale

+0

Zrobiłem to, ale kiedy przyciśnięty przycisk powrotu widzę albo B albo C obecne na stos. – wasaig

Powiązane problemy