it-swarm.com.de

Wenn Sie die Startseite der Aktionsleiste als Aufwärtsschaltfläche verwenden, ist die Ausgangsaktivität saveInstanceState immer null

Aktivität A === Klicken Sie auf die Schaltfläche ===> Aktivität B

Wenn Sie die Zurück-Taste drücken, wird Aktivität A nicht neu erstellt.

Wenn Sie die Home-Taste als Aufwärtstaste drücken, wird die Aktivität A neu erstellt.

Ich speichere also den Status bei A.onSaveInstanceState (Bundle outState) und verwende den Status bei A.onRestoreInstanceState (Bundle savedInstanceState).

Speichern und Verwenden funktioniert einwandfrei (außer zu Hause als Aufwärtstaste)

.

Jedoch,

Wenn Sie als Aufwärtstaste nach Hause drücken, erstellt das System die Aktivität A neu, und SavedInstanceState ist nicht mehr vorhanden.

Wie kann ich den Status gespeicherter Instanzen verwenden?

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case Android.R.id.home:
        // I do not want this... 
        // Home as up button is to navigate to Home-Activity not previous acitivity
            super.onBackPressed();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
34
ChangUZ

In der onCreate () aktivieren Sie die Home-Schaltfläche.

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
}

Führen Sie dies in der Methode onOptionItemSelected () aus.

@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);
}

Dies sollte die Navigation nach oben ermöglichen. Wenn Sie möchten, dass die übergeordnete Aktivität mit einem savedInstanceState wiederhergestellt wird. Du solltest launchMode="singleTop" in der übergeordneten Aktivität in der Manifest-Datei.

Weitere Informationen finden Sie unter http://developer.Android.com/: Providing Up Navigation

54
Aegis
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case Android.R.id.home:
        finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

Ich habe finish () anstelle von NavUtils verwendet.

28
Asrin