Próbowałem pokazać „Czy chcesz wyjść?” rodzaj okna dialogowego, gdy użytkownik próbuje wyjść z działania.
Nie mogę jednak znaleźć odpowiednich haków interfejsu API. Activity.onUserLeaveHint()
początkowo wyglądało obiecująco, ale nie mogę znaleźć sposobu, aby zatrzymać działanie przed zakończeniem.
Odpowiedzi:
W systemie Android 2.0+ wyglądałoby to tak:
We wcześniejszych wersjach wyglądałoby to tak:
źródło
źródło
CustomTabActivity.super.onBackPressed
finish()
kodsuper.onBackPressed()
?MyActivity.super.onBackPressed();
i działa dobrze dla mnie. Wydaje się to również najbardziej logiczne - wywołać metodę, którą zastępujesz, jeśli chcesz standardowego zachowania, gdy użytkownik stuknie „Nie”.Zmodyfikowałem kod @ user919216 .. i dostosowałem go do WebView
źródło
Wolę wyjść z dwukrotnym dotknięciem przycisku Wstecz niż z oknem wyjścia.
W tym rozwiązaniu pokazuje toast, gdy wracasz po raz pierwszy, ostrzegając, że kolejne naciśnięcie wstecz spowoduje zamknięcie aplikacji. W tym przykładzie mniej niż 4 sekundy.
Token od: http://www.androiduipatterns.com/2011/03/back-button-behavior.html
źródło
Jeśli nie masz pewności, czy wywołanie „wstecz” spowoduje zamknięcie aplikacji lub przeniesie użytkownika do innej czynności, możesz zawrzeć powyższe odpowiedzi w czeku, isTaskRoot (). Może się to zdarzyć, jeśli główna aktywność może być wielokrotnie dodana do tylnego stosu lub jeśli manipulujesz historią stosu wstecznego.
źródło
Korzystanie z Lambda:
Musisz także ustawić poziom języka, aby obsługiwał java 8 w swoim gradle.build:
źródło
w Chinach większość aplikacji potwierdzi zakończenie przez „dwukrotne kliknięcie”:
źródło
Najpierw usuń
super.onBackPressed();
zonbackPressed()
metody niż i poniżej kodu:źródło
Lubię podejście @GLee i używanie go z fragmentem jak poniżej.
Dialog przy użyciu fragmentu:
źródło
źródło
Inną alternatywą byłoby pokazanie
Toast
/Snackbar
przy pierwszym naciśnięciu wstecz, prosząc o ponowne naciśnięcie, aby wyjść , co jest o wiele mniej uciążliwe niż pokazanie,AlertDialog
czy użytkownik chce wyjść z aplikacji.Możesz to zrobić
DoubleBackPress Android Library
za pomocą kilku linii kodu. Przykład GIF pokazujący podobne zachowanie.Na początek dodaj zależność do aplikacji:
Następnie w swoim działaniu zaimplementuj wymagane zachowanie.
Na koniec ustaw to jako zachowanie na prasie tylnej.
źródło