2010-04-22 12 views
6

Mam więc ogromny labirynt działań w mojej aplikacji. To, co muszę zrobić, to to, że kiedy użytkownik loguje się do systemu, historia aktywności powinna zostać wyczyszczona. Nie mogę po prostu użyć metody finish(), gdy rozpoczynam nową aktywność, ponieważ chcę, aby działania miały historię do momentu zalogowania się użytkownika. Eksperymentowałem z różnymi flagami podczas uruchamiania działania, ale nie udało mi się. Jakieś pomysły?Rozpocznij aktywność i wyczyść historię aktywności

Cheers,

Odpowiedz

2

równie dobrze mogę ujawnić Hax Obecnie używam rozwiązać mój problem. Na „pre-rejestrowane w” działaniach, mam ustawić to w manifeście:

android:noHistory="true" 

Następnie w każdej działalności Mam ten kod:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent intent = new Intent(MyActivity.this, ParentActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
     startActivity(intent); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 

} 

FLAG_ACTIVITY_NO_ANIMATION działa tylko na telefonach z poziomu API 5 lub więcej, ale zamiast tego na "otwartej nowej aktywności" -animacja gra się "wracając do poprzedniej aktywności" (co najmniej na droidie i nexusie). Zapobiega to mylącemu pojawieniu się nowej aktywności, gdy użytkownik naciśnie przycisk Wstecz.

To rozwiązanie nie jest idealne. Na telefonach o poziomie API niższym niż 5 animacje stają się niepoprawne. Poza tym nie jest super i wymaga więcej kodu niż ja wolę. Mimo to, to działa ...

+0

Ten całkowicie pracował dla mnie, gdy próbuje symulować „wraca” do poprzedniej pracy (to jest, oczywiście, nie do końca tam). Dzięki! Chciałem to zrobić przy użyciu domyślnych ID animacji, ale ku mojemu zdziwieniu nie są one publicznie dostępne. Domyśl. – dmon

+1

jeśli faktycznie używasz klucza, powinieneś raczej zwrócić wartość true zamiast wywołać super – njzk2

+0

Prawda, poprawiłem odpowiedź. – pgsandstrom

1

można użyć 65536 zamiast Intent.FLAG_ACTIVITY_NO_ANIMATION dla wcześniejszych wersji

Powiązane problemy