2010-01-22 19 views
47

Muszę zastąpić bieżącą aktywność nową. Oznacza to, że chcę rozpocząć nową aktywność i usunąć bieżącą aktywność ze stosu zadań.Zamień bieżącą aktywność

W oparciu o dokumentację, wydaje się, że najlepszym sposobem byłoby rozpoczęcie działania z użyciem Activity.startActivity jak zwykle, a następnie natychmiastowe wywołanie Activity.finish w celu zamknięcia bieżącej aktywności.

Czy to jest prawidłowe użycie tych interfejsów API, czy powinienem robić coś innego?

Odpowiedz

50

Tak. W ten sposób można używać api.

+3

to działa z startActivityForResult? Jeśli tak, to gdzie publikuje się wyniki? – nmr

+1

Dla osób zastanawiających się nad pytaniem @ nmr, to co robiłem, to rozpoczynanie nowej aktywności dla wyniku, a następnie wywoływanie metody finish() w trybie onActivityResult w razie potrzeby. –

5

spróbuj FLAG_ACTIVITY_TASK_ON_HOME, FLAG_ACTIVITY_NEW_TASK w intencji flagi

24

Właściwym sposobem osiągnięcia tego celu jest za pomocą następujących czynności:

Intent intent = new Intent(this,MyActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME); 
startActivity(intent); 
this.finish(); 

Kod zakłada jesteś w działalności, w przeciwnym razie, jeśli używasz fragmenty użyj getActivity()

W ten sposób rozpoczyna się działanie, odpowiednio ustawiłeś hierarchię dla przycisku Wstecz, a także niszczysz odpowiednie zjadł działalność.

2

Możesz dodać androida: launchMode = "singleInstance" w swojej działalności, a następnie zastąpić onNewIntent metodę aktualizacji data

referencyjny PlayerActivity in ExoPlayer Demo

+0

jest to naprawdę przydatna rzecz, jeśli masz logiczną/funkcjonalną stronę "Strona główna" i używasz dużo nawigacji (jak szuflada nawigacji) –

Powiązane problemy