Я хотел сохранить сложный объект Java во время поворота экрана, так что я сделал объект Parcelable и реализованы необходимые методы:Как работает Parcelable?
- в writeToParcel (Parcel Dest, Int флаги) метод, я несколько сохраненных значений «Цел».
- в методе Parcelable.Creator's createFromParcel (Parcel source), я получил значения из «источника» в правильном порядке и вернул соответствующий объект.
Тогда в onSaveInstanceState осколком я спас Parcelable:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("myObject", myObject);
}
и получил свой объект в OnCreate фрагмента:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyObject myObject = savedInstanceState.getParcelable("myObject");
}
Это работало отлично.
Тогда я сделал тест:
- Deleted весь мой код в методе writeToParcel.
- Возврат null в методе createFramParcel.
Когда я запустил приложение, у меня появился ТОЧНЫЙ РЕЗУЛЬТАТ! Я получил объект со всеми соответствующими значениями в нем.
Почему это сработало? Производит ли Parcelable «Parcelable objects» автоматически?
Я уверен, что порядок вызовов в 'onSaveInstanceState()' неправильный путь (вы изменяете пакет после его сохранения). – dhke