2017-05-26 4 views
0

Wenn ich beabsichtige, von einer übergeordneten Aktivität in eine andere zu wechseln und dann mit action bar nav zum übergeordneten Element zurückzukehren, hat die übergeordnete Aktivität alle meine Änderungen und Werte verloren (als a Benutzer) und ist zurück zu Standard-XML-Anzeige, die ich dafür habe.Übergeordnete Aktivität wird zurückgesetzt, wenn von Kind zurück navigiert wird

Ich habe diese in meinem Kinder Aktivität OnCreate:

ActionBar actionBar = getSupportActionBar(); 
actionBar.setHomeButtonEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 

und etikettiert meine Eltern Tätigkeit sachgemässer:

android:parentActivityName=".MainActivity" 

Was ich tun müssen, oder machen speichern diese Änderungen erinnern, wenn zwischen den Aktivitäten Reisen ?

Antwort

1

In der Manifest-Datei, sollten Sie android gesetzt: launchMode wie folgt aus:

<!-- ACTIVITY --> 
     <activity 
      android:name=".activities.MainActivity" 
      android:configChanges="orientation|screenSize" 
      android:launchMode="singleTask" 
      android:screenOrientation="portrait"/> 

Ps: Start-Modus auf diesen Link lesen: https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

+0

Nett! die anderen Jungs Vorschlag von "Singletop" launchmode auch funktioniert, aber es nach dem Lesen des Materials, das Sie zur Verfügung gestellt, dass "singleTask" ist der am besten geeignete Startmodus. Danke für eine Antwort mit zusätzlichen Informationen zu lesen :) – Destreation

+0

@Destreation Eigentlich sollte die Verwendung von 'singleTask' Startmodus nur in ganz bestimmten Fällen (wie in einem HOME-Bildschirm Ersatz) verwendet werden, nicht in Standard-Navigationsfällen wie diesem. Hier sollte die Verwendung von 'singleTop' ausreichen, um zu der vorhandenen Instanz von' MainActivity' zurückzukehren. Der 'singleTask'-Startmodus bringt eine Menge seltsames Verhalten mit sich, das Ihnen in der Zukunft viele Schmerzen bereiten kann. Lesen Sie [Bereitstellung von UP-Navigation] (https://developer.android.com/training/implementing-navigation/ancestral.html) –

+0

@DavidWasser: Können Sie "seltsames Verhalten" erklären? – MrTy

1

Es gibt mehrere Möglichkeiten, um zu versuchen -

1) die neue Tätigkeit beginnen mit startActivityForResult()

2) in der Manifest-Datei, stellen Sie die android:launchMode="singleTop" der Mutter Aktivität

Hoffe, es hilft

0

Möglicherweise erstellen Sie eine neue Instanz Ihres übergeordneten Elements, wenn Sie auf die Navigationsschaltfläche klicken. Ein einfacher Ansatz besteht darin, Ihre Aktivität einfach zu beenden, sodass die Aktivitäten im Backstack einfach wieder aufgenommen werden.

Etwas wie folgt aus:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     finish(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
Verwandte Themen