Android – Schaltfläche “Zurück” in der Titelleiste

Lesezeit: 6 Minuten

Benutzer-Avatar
Zeichnete

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?

Benutzer-Avatar
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.

Geben Sie hier die Bildbeschreibung ein

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


Benutzer-Avatar
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>

Sehen Geben Sie die übergeordnete Aktivität an

  • Genau danach habe ich gesucht. Du hast meinen Tag gerettet. Vielen Dank.

    – Tashi Dendup

    14. Mai 2020 um 20:38 Uhr


Benutzer-Avatar
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


Benutzer-Avatar
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);
    }

1014010cookie-checkAndroid – Schaltfläche “Zurück” in der Titelleiste

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy