Ich habe kürzlich ein neues Muster zum Speichern des Fragmentstatus durch ein beibehaltenes Fragment entwickelt. Statt Dinge in onSaveInstanceState
als solche Sparend:Gibt es einen Nachteil, diesen Zustand mit einem Fragment zu erhalten?
public class MyActivityOrFragment {
public void onSaveInstanceState(Bundle bundle) {
bundle.putInt("example", 123);
}
// plus restore in onCreate
}
Ich halte einen Zustand Fragment wie folgt aus:
public class MyActivityOrFragment {
public static class State extends Fragment {
int example = 123;
public void onCreate(...) {
...
setRetainInstance(true);
}
}
State state;
public void onCreate(Bundle ssi) {
if (ssi == null) {
state = new State();
getFragmentManager().beginTransaction().add(state, "state").commit();
} else {
state = (State) getFragmentManager().findByTag("state");
}
}
}
Mit viel Zustand zu halten, dies so viel vorformulierten verringert, weil ich es einfach halten kann das Zustandsfragment und weiß, dass es automatisch beibehalten wird. Gibt es jedoch einen Nachteil bei der Verwendung des beibehaltenen Fragments, anstatt es wie üblich im Paket zu speichern? Ist das zu schön, um wahr zu sein?
Überprüfen Sie dies: https://github.com/frankiesardo/icepick – Teodor