Wenn Sie in vielen Apps (Kalender, Drive, Play Store) auf eine Schaltfläche tippen und eine neue Aktivität eingeben, verwandelt sich das Symbol in der Titelleiste in eine Zurück-Schaltfläche, aber für die App, die ich mache, tut es das nicht. Wie bringe ich Sie mit diesem Symbol zum vorherigen Bildschirm zurück?
Android – Schaltfläche “Zurück” in der Titelleiste
Zeichnete
Lukas
Es gibt zwei einfache Schritte, um einen Zurück-Button in der Titelleiste zu erstellen:
Machen Sie zunächst das Anwendungssymbol klickbar, indem Sie den folgenden Code in der Aktivität verwenden, in deren Titelleiste Sie eine Zurück-Schaltfläche haben möchten:
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
Nachdem Sie den obigen Code hinzugefügt haben, wird links neben dem Anwendungssymbol ein Zurück-Pfeil angezeigt.
Zweitens müssen Sie, nachdem Sie die obigen Schritte ausgeführt haben, noch Code erstellen, der das Click-Ereignis nutzt. Beachten Sie dabei, dass beim tatsächlichen Klicken auf das Anwendungssymbol eine onOptionsItemSelected
Methode aufgerufen wird. Um also zur vorherigen Aktivität zurückzukehren, fügen Sie diese Methode zu Ihrer Aktivität hinzu und stellen Sie sie ein Intent
Code darin, der Sie zur vorherigen Aktivität zurückbringt. Sagen wir zum Beispiel die Aktivität, die Sie versuchen geh zurück zu wird genannt MyActivity
. Um darauf zurückzukommen, schreiben Sie die Methode wie folgt:
public boolean onOptionsItemSelected(MenuItem item){
Intent myIntent = new Intent(getApplicationContext(), MyActivity.class);
startActivityForResult(myIntent, 0);
return true;
}
Das ist es!
(In der Android-Entwickler-API wird empfohlen, mit dem Manifest herumzuspielen und Dinge wie android:parentActivityName
. Aber das scheint bei mir nicht zu funktionieren. Das obige ist einfacher und zuverlässiger.)
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
Und in Ihrer Aktivität
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
Sie haben es gut erklärt, aber wenn in Ihrem onOptionItemSelected nichts falsch ist, sollten Sie einfach finish () aufrufen. In Ihrem Fall startet startActivityForResult die zweite Aktivität und wenn Sie von der zweiten Aktivität zurück drücken, werden Sie zur ersten Aktivität zurückgeworfen (wo Sie das Aktionsleistensymbol gedrückt haben).
– Yahya Arshad
4. November 2013 um 4:52 Uhr
-
Darüber hinaus sollten Sie dies nur tun, wenn item.getItemId() android.R.id.home ist
– Alex Bitek
12. Juni 2015 um 18:22 Uhr
-
Wie AS feststellt: „Der Methodenaufruf ‚actionBar.setDisplayHomeAsUpEnabled(true)‘ kann java.lang.NullPointerException erzeugen.“
– statosdotcom
29. Juni 2016 um 15:26 Uhr
-
Warnung! Bei einer ToolBar gibt actionBar bei einem Absturz null zurück. Siehe Antworten unten.
– CoolMind
15. Dezember 2017 um 13:18 Uhr
-
getActionBar() hat bei mir nicht funktioniert, App stürzt einfach ab. getSupportActionBar() hat funktioniert.
– John Ktejik
9. Oktober 2018 um 15:15 Uhr
Anupam Sharma
Verwenden Sie diesen Code
@Override
public void onCreate(Bundle savedInstanceState) {
...
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Danach schreiben Sie diesen Code hinein onOptionsItemSelected
Methode
int id = item.getItemId();
if (id==android.R.id.home) {
finish();
}
-
getActionBar()
gibt mir eine Null; wissen Sie, warum?– msysmilu
23. Januar 2015 um 0:22 Uhr
-
weil es keine ActionBar gibt, zB mit Stil
- false
- true
– Paul Verest
16. Februar 2015 um 8:06 Uhr
Ich habe es endlich geschafft, die Schaltfläche „Zurück“ ordnungsgemäß zur Aktionsleiste/Symbolleiste hinzuzufügen
@Override
public void onCreate(Bundle savedInstanceState) {
...
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
-
Dies ist die einzige Antwort, die für mich funktioniert. Danke @LucyFair
– Arda Çebi
1. Mai 2018 um 18:08 Uhr
-
Dasselbe. Vielen Dank für Ihre Antwort.
– Maria
2. Februar 2019 um 13:37 Uhr
-
Dasselbe. Keine der anderen Antworten funktioniert. Dies hätte die akzeptierte Antwort sein sollen.
– El Sushiboi
13. Juli 2020 um 19:09 Uhr
1.- Fügen Sie die Aktivität zu AndroidManifest.xml hinzu und stellen Sie sicher, dass Sie die Metadaten bereitstellen:
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
2.- Fügen Sie der onCreate-Methode der Aktivität den folgenden Code hinzu:
@Override
public void onCreate(Bundle savedInstanceState) {
...
getActionBar().setDisplayHomeAsUpEnabled(true);
}
3.- Überschreiben Sie onOptionsItemSelected und verwenden Sie die statische Methode NavUtils.navigateUpFromSameTask(), um durch den Stack zu navigieren.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
Die Verwendung von navigationUpFromSameTask() ist jedoch nur geeignet, wenn Ihre App der Eigentümer der aktuellen Aufgabe ist (d. h. der Benutzer hat diese Aufgabe von Ihrer App aus gestartet). Wenn dies nicht der Fall ist und Ihre Aktivität in einer Aufgabe gestartet wurde, die zu einer anderen App gehört, sollte das Navigieren nach oben eine neue Aufgabe erstellen, die zu Ihrer App gehört, was erfordert, dass Sie einen neuen Backstack erstellen.
Wenn Ihre Aktivität Aktivität verlängert
public class YourActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xxx);
getActionBar().setHomeButtonEnabled(true);
[...]
}
[...]
}
Wenn Ihre Aktion AppCompatActivity erweitert
public class YourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xxx);
getSupportActionBar().setHomeButtonEnabled(true);
[...]
}
[...]
}
Gar nichts mehr zu tun, siehe Aktion hinzufügen
[OPTIONAL] Um die übergeordnete Aktivität explizit zu definieren, ändern Sie Ihre Manifest.xml wie folgt:
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.YourActivity "
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
-
Genau danach habe ich gesucht. Du hast meinen Tag gerettet. Vielen Dank.
– Tashi Dendup
14. Mai 2020 um 20:38 Uhr
Shahriar Ahmad
Zuerst müssen Sie diese Codes schreiben
@Override
protected void onCreate(Bundle savedInstanceState) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
Fügen Sie dann diese Zeile im Manifest hinzu
<activity android:name=".MainActivity"
android:parentActivityName=".PreviousActivity"></activity>
Ich denke, es wird funktionieren
-
Genau danach habe ich gesucht. Du hast meinen Tag gerettet. Vielen Dank.
– Tashi Dendup
14. Mai 2020 um 20:38 Uhr
M Anees
Fügen Sie zunächst in der Funktion onCreate die folgende Zeile hinzu
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
und fügen Sie dann die folgende Funktion in den Code ein:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Probieren Sie getSupportActionBar() im OnCreate-Beispiel hier aus freakyjolly.com/how-to-add-back-arrow-in-android-activity
– Code-Spion
4. Juni 2018 um 11:02 Uhr