Ich möchte die Schaltfläche "Aktivität zurück" in der Aktionsleiste anpassen, nicht in der Schaltfläche "Zurück". Ich habe die onBackPressed()
Methode überschrieben . Es funktioniert mit meiner Emulator-Zurück-Taste, aber nicht mit der Aktionsleiste-Zurück-Taste.
Ich möchte, dass es mit der Aktionsleiste passiert. Wie kann ich das machen?
Hier ist mein Code:
@Override
public void onBackPressed() {
Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show();
return;
}
Ich habe diesen Toast verwendet, unabhängig davon, ob das Zurückdrücken funktioniert oder nicht, aber die tatsächliche Implementierung ändert sich gerne, um zur vorherigen Aktivität zurückzukehren. Dies funktioniert jedoch nicht mit der Schaltfläche oben in der Aktionsleiste (außer dem Titel der Aktivität).
Bitte jemand könnte mir das Problem nennen.
return true;
zureturn super.onOptionsItemSelected(item)
. Dann können Sie etwas bewirken, wenn der Benutzer auf die Schaltfläche zum Zurücksetzen der Aktionsleiste klickt, aber dennoch die gleiche Funktionalität der Schaltfläche beibehält.Wenn Sie möchten, dass sich die ActionBar-Zurück-Schaltfläche genauso verhält wie die Hardware-Zurück-Schaltfläche:
quelle
android.R.id.home
feuert nichtsetHasOptionsMenu(true)
die onCreate-Methode des Fragments aufrufenZwei Dinge, die zu beachten sind, dass der Benutzer entweder die Zurück-Taste oder die Home-Taste der Aktionsleiste drücken kann.
Wenn Sie ihn also zum selben Ziel umleiten möchten, können Sie dies tun.
Dies bringt den Benutzer zu der Absicht, entweder eine Taste oder die Aktionsleistentaste zu drücken.
quelle
android.R.id.home
feuert nichtquelle
Tut mir leid, meine Antwort ist spät, aber für alle anderen, die mit derselben Frage auf diese Seite kommen, habe ich Folgendes versucht:
Dies konnte jedoch den Tastendruck "Zurück" nicht erfassen.
Schließlich fand ich unter https://stackoverflow.com/a/37185334/3697478 eine Methode, die für mich funktioniert, nämlich das Überschreiben von "onSupportNavigateUp ()", wenn ich die Aktionsleiste aus der Support-Bibliothek "AppCompatActivity" verwende. (Für die neuere Aktionsleisten- / Symbolleistenbibliothek gibt es ein äquivalentes "onNavigateUp ()".)
und ich habe den Abschnitt "android: parentActivityName =". MainActivity "aus der Manifestdatei entfernt.
quelle
Ich habe dies erreicht, indem ich einfach zwei Schritte verwendet habe:
Schritt 1: Gehen Sie zu AndroidManifest.xml und fügen Sie den Parameter in tag - android hinzu: parentActivityName = ". Home.HomeActivity"
Beispiel:
Schritt 2: Fügen Sie in ActivityDetail Ihre Aktion für die vorherige Seite / Aktivität hinzu
Beispiel:
quelle
Wenn Sie durch Drücken der ActionBar-Home-Schaltfläche zur vorherigen Instanz einer Aktivität zurückkehren möchten, ohne sie neu zu erstellen, können Sie die Methode getParentActivityIntent überschreiben, um die Methode aus dem Backstack zu verwenden:
BEARBEITEN:
Sie können das gleiche Ergebnis erzielen,
indem Sie den Startmodus Ihrer übergeordneten Aktivität auf singleTop setzen.
Stellen Sie also
android:launchMode="singleTop"
in Ihrem Manifest die übergeordnete Aktivität ein.Oder Sie können das Flag FLAG_ACTIVITY_CLEAR_TOP mit der Absicht UP verwenden.
Referenz: Bereitstellen der Navigation
quelle
(1) Fügen Sie eine Elternaktivität für Ihre Kinderaktivität hinzu (AndroidManifest.xml).
(2) Überschreiben Sie die onSupportNavigateUp-Methode innerhalb der untergeordneten Aktivität
quelle
quelle
Es gibt verschiedene Möglichkeiten, die Schaltfläche "Zurück" in der Leiste einzurichten:
1) Methode
.setDisplayHomeAsUpEnabled(true);
wird es tun, und dann können Sie einfach überschreibenandroid.R.id.home
2) Hinzufügen
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="my.package.parrent" />
in Android Manifest, aber in diesem Fall können Sie OnOptionsMenuSelected nicht überschreibenandroid.R.id.home
... für diejenigen, die sich fragen, warum es bei ihnen nicht funktioniert ...
quelle