ich ein paar ähnliche Fragen zu onSaveInstanceState
gesehen haben nicht für Fragment
s genannt zu werden, aber in meinem Fall Fragment
Arbeit in Ordnung, es ist die Haupt FragmentActivity
, die Probleme haben wird.FragmentActivity onSaveInstanceState nicht immer genannt
Der entsprechende Code sieht ziemlich einfach:
public class MyFActivity extends FragmentActivity implements ActionBar.TabListener {
String[] allValues; // data to save
@Override
protected void onSaveInstanceState (Bundle outState) {
Log.d("putting it!", allValues.toString());
outState.putStringArray("allValues", allValues);
super.onSaveInstanceState(outState);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
allValues = savedInstanceState.getStringArray("allValues");
Log.d("getting it!", allValues.toString());
}
}
}
Wenn die Aktivität pausieren (mit der Zurück-Taste) wird die onSaveInstanceState
nie genannt wird, und folglich savedInstanceState
ist immer null
im onCreate
Methode auf die App wieder aufnehmen . Ich habe versucht, das Hinzufügen eines Block wie folgt aus:
@Override
public void onPause() {
super.onPause();
onSaveInstanceState(new Bundle());
}
, die in https://stackoverflow.com/a/14195202/362657 vorgeschlagen wurde, aber während onSaveInstanceState
dann aufgerufen wird, savedInstanceState
bleibt null
innerhalb onCreate
Methode. Was vermisse ich?
"Beim Pausieren der Aktivität (mit der Zurück-Schaltfläche)" wird normalerweise das Fragment zerstört, so dass 'savedInstanceState' verloren ist. Siehst du den richtigen 'saveInstanceState' in' onCreate() ', wenn du das Gerät drehst? – Sam
Anstatt onCreate, sollten Sie vielleicht onResume() verwenden? Wenn die Aktivität nur pausiert ist, sollte onCreate() nicht erneut aufgerufen werden, onResume() sollte – Tom
Hm, das erklärt es! Zerstört ist es. – SaltyNuts