W wielu aplikacjach (Kalendarz, Dysk, Sklep Play) po dotknięciu przycisku i wprowadzeniu nowej czynności ikona na pasku tytułu zamienia się w przycisk Wstecz, ale w przypadku tworzonej przeze mnie aplikacji tego nie robi. Jak sprawić, by ta ikona przenosiła Cię z powrotem do poprzedniego ekranu?
android
user-interface
themes
titlebar
Rysował
źródło
źródło
Odpowiedzi:
Istnieją dwa proste kroki, aby utworzyć przycisk Wstecz na pasku tytułu:
Najpierw spraw, aby ikona aplikacji była klikalna, używając następującego kodu w działaniu, w którym na pasku tytułu chcesz umieścić przycisk Wstecz:
Po dodaniu powyższego kodu po lewej stronie ikony aplikacji pojawi się strzałka wstecz.
Po drugie, po wykonaniu powyższych czynności nadal musisz utworzyć kod, który wykorzysta zdarzenie kliknięcia. Aby to zrobić, pamiętaj, że po kliknięciu ikony aplikacji wywoływana
onOptionsItemSelected
jest metoda. Aby więc wrócić do poprzedniej czynności, dodaj tę metodę do swojej aktywności i umieśćIntent
w niej kod, który spowoduje powrót do poprzedniej czynności. Na przykład, powiedzmy, że czynność, do której próbujesz wrócić, nazywa sięMyActivity
. Aby do niego wrócić, napisz metodę w następujący sposób:Otóż to!
(W interfejsie API dla programistów Androida zaleca się majstrowanie przy manifestie i dodawanie takich rzeczy, jak
android:parentActivityName
. Ale to nie działa dla mnie. Powyższe jest prostsze i bardziej niezawodne).I w Twojej Aktywności
źródło
użyj tego kodu
po tym napisz ten kod w
onOptionsItemSelected
metodzieźródło
getActionBar()
daje mi zero; wiesz dlaczego?W końcu udało mi się poprawnie dodać przycisk Wstecz do paska akcji / paska narzędzi
źródło
1. - Dodaj działanie do AndroidManifest.xml i upewnij się, że podajesz metadane:
2. - Dodaj następujący kod do metody onCreate działania:
3. - Zastąp onOptionsItemSelected i użyj statycznej metody NavUtils.navigateUpFromSameTask (), aby nawigować po wyrzucie stosu.
źródło
Jeśli Twoja aktywność rozszerza Aktywność
Jeśli Twoja akcja rozszerza AppCompatActivity
Nie ma nic więcej do zrobienia, zobacz Dodawanie akcji
[OPCJONALNIE] Aby jawnie zdefiniować aktywność rodziców, zmodyfikuj plik Manifest.xml w ten sposób:
Zobacz Określanie działania nadrzędnego
źródło
Jeśli twoja aktywność się rozszerza
AppCompatActivity
, musisz zmienićonSupportNavigateUp()
metodę w następujący sposób:Zajmij się logiką w swojej
onBackPressed()
metodzie i po prostu wywołaj tę metodę,onSupportNavigateUp()
aby przycisk Wstecz w telefonie i strzałka na pasku narzędzi zrobiły to samo.źródło
przede wszystkim w funkcji onCreate dodaj następujący wiersz
a następnie dodaj następującą funkcję w kodzie:
źródło
Najpierw musisz napisać te kody
Następnie dodaj tę linię w manifeście
źródło
Jeśli używasz nowej biblioteki obsługi 5.1 w Android Studio, możesz zamiast tego użyć jej w AppCompatActivity
Twoje zdrowie.
źródło
Najprostszy sposób i najlepsze praktyki, jak wyjaśnia Google tutaj :
1.Dodaj rodzica dla swojego dziecka Aktywność w
AndroidManifest.xml
:2. aktywuj przycisk Wstecz w swoim dziecku Aktywność:
Pracował dla mnie, mam nadzieję, że działa również dla Ciebie.
źródło
Po pewnym czasie, który znalazłem, opcja motywu jest głównym problemem w moim kodzie, a poniżej jest właściwy sposób pokazania paska narzędzi
W pliku AndroidManifest najpierw musisz zmienić styl motywu
następnie w pliku XML aktywności musisz wywołać swój własny pasek narzędzi, taki jak
A następnie ten pasek narzędzi powinien zostać wywołany w pliku Java przez
W przypadku paska narzędzi wyświetlającego U należy sprawdzić wartość null, aby uniknąć wyjątku NullPointerException
W przypadku aktywności domowej z powrotem dodaj to
LUB dla żądanej aktywności z powrotem
źródło
Widziałem odpowiedzi na tyle kompleksów, więc to jest mój kod. Pracuję tutaj. Możesz to osiągnąć na dwa sposoby.
1) Zgodność z Androidem Stardard
2) Użyj niestandardowej ikony
Jeśli chcesz używać kodu w komentarzach, wystarczy dodać ten plik do rysowania o nazwie ic_arrow_white_24dp.xml
Z tym kodem.
Mam nadzieję, że pomoże to niektórym osobom tutaj!
źródło
Wersja lekka bez użycia,
ActionBarActivity
która nadal ma tutaj te same bahaviors:Sposób użycia: Umieścić
new ToolbarConfigurer(this, (Toolbar) findViewById(R.id.my_awesome_toolbar), true);
wonCreate
.źródło
Musisz dodać poniższy kod w pliku manifestu. Wyszukaj działanie, do którego chcesz dodać funkcję strzałki wstecz. Jeśli znajdziesz ten, dobrze lub utwórz działanie
Następnie dodaj następujące trzy wiersze kodu pomiędzy.
I nie zapomnij dodać tego fragmentu kodu w onCreate (); metoda Twojej konkretnej aktywności, w której potrzebujesz strzałki wstecz.
W ten sposób rozwiązałem problem. Dzięki.
źródło
Inne odpowiedzi nie wspominają, że możesz również ustawić to w XML swojego
Toolbar
widżetu:app:navigationIcon="?attr/homeAsUpIndicator"
Na przykład:
źródło
Wszystko, co musisz zrobić w 2020 roku:
(biorąc pod uwagę, że chcesz wrócić do głównej aktywności)
źródło
Jeśli używasz ActionBar, zechcesz przeczytać tę dokumentację http://developer.android.com/reference/android/app/ActionBar.html#setDisplayHomeAsUpEnabled(boolean)
Następnie musisz nadpisać metodę onOptionsItemSelected (MenuItem) i poszukać zdarzenia android.R.id.home, które ma nadejść. Wtedy wiesz, że użytkownik kliknął ten przycisk Wstecz na pasku akcji
źródło
Można to również zrobić bez kodu, określając działanie nadrzędne w manifeście aplikacji. Jeśli chcesz mieć przycisk Wstecz w działaniu B, który spowoduje przejście do działania A, po prostu dodaj działanie A jako element nadrzędny działania B w manifeście.
źródło
Kotlin:
źródło
Musiałem pomieszać niektóre odpowiedzi, aby uzyskać właściwą odpowiedź, ponieważ moja aplikacja ma 3 czynności, które mogą się powtarzać w dowolnym momencie. Aktywność1> Aktywność2> Aktywność3. Kiedy robiłem coś w swoim działaniu3, przycisk Wstecz prawidłowo cofał się do Działania2. Jednak z Activity2, używając
finish()
, było to kopiowanie do Activity3, a nie Activity1. I rozszerzam AppCompatActivity. Tak więc moje rozwiązanie brzmiało:w AndroidManifest.xml:
i na koniec przycisk akcji w moim menu (pasek akcji):
Używanie
NavUtils.navigateUpFromSameTask(this);
zadziałało dla mnie zamiastfinish()
.źródło
Po prostu udostępniam coś, co mi pomogło i może być przydatne dla innych. Chociaż większość odpowiedzi tutaj jest poprawnych, to nie zadziałało, używając polecenia
getActionBar().setDisplayHomeAsUpEnabled(true);
. Problem polegał na tym, że próbowałem ręcznie utworzyć drugie działanie, ale jest więcej szczegółów.To, co naprawdę rozwiązało mój problem, to skorzystanie z samouczka dla programistów Androida ( https://developer.android.com/training/basics/firstapp/starting-activity ), aby utworzyć drugie działanie przy użyciu własnych narzędzi Android Studio:
źródło
Możesz także po prostu umieścić
onBackPressed()
odbiornik onClick. Powoduje to, że przycisk działa jak domyślny przycisk „Utwórz kopię zapasową” w aplikacjach na Androida!źródło
źródło
To działa dla mnie. Przypuśćmy, że istnieją dwie czynności (Activityone, Activitytwo)
Wewnątrz Activitytwo użyj tego kodu
Na Activityone
Powinno to być uwzględnione w drugiej czynności w pliku manifestu
Wynik byłby taki
źródło
źródło
To działa dla mnie getSupportActionBar (). SetDisplayHomeAsUpEnabled (false); wprowadź opis obrazu tutaj
źródło