In einer Anwendung einstellen, wenn ein Fragment Fokus verliert (d.h. eine andere Aktivität/Fragment wird über sie geöffnet ist), ist es onSaveInstanceState()
aufgerufen.Bundle in onActivityCreated() gibt null, auch nach Werten in onSaveInstanceState()
Gleiches wird in developers guide erwähnt.
Ich versuche diesen Ansatz zu verwenden, um den Zustand meines Fragments zu erhalten, wann immer es fortgesetzt wird. Meine Absicht war, diese bundle
in onActivityCreated()
zu nennen, wenn das Fragment wieder aufgenommen wird.
Obwohl onSaveInstanceState
aufgerufen wird, bevor Fragment Fokus verlieren. Aber wenn onActivityCreated()
aufgerufen wird, erhält es die Bundle savedInstanceState
als Null.
Wie kann ich die Daten aus dem Bundle abrufen.
Code:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MyListAdapter adapter = new MyListAdapter(getActivity(),
R.layout.my_row, titles, icons, this);
setListAdapter(adapter);
if (savedInstanceState != null) {
// Never goes inside this condiiton.
// Restore last state for checked position.
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
versuchen Sie einige log.v Methoden, und senden Sie die Logcat. Dies wird zeigen, wo das Programm wechselt –
gibt es eine weitere Möglichkeit, die Sie 'SharedPreferences' verwenden können –
Ist es die ganze Zeit Fehler oder nur das erste Mal, wenn Sie die Anwendung öffnen? – Otra