我的代码是这样的:
@Override
public Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
SavedState savedState = new SavedState(superState);
savedState.progress = mProgress;
return savedState;
}
@Override
public void onRestoreInstanceState(Parcelable state) {
SavedState savedState = (SavedState) state;
mProgress = savedState.progress;
super.onRestoreInstanceState(savedState.getSuperState());
}当我在onSaveInstanceState中将mProgress值传递给savedState时,它的值是60,而在onRestoreInstanceState中,我得到的值是0。
如果我将onSavedInstanceState中的代码savedState.mProgress = mProgress修改为savedState.mProgress = 10,那么在onRestoreInstanceState中我会得到10。
太奇怪了。如果我把mProgress设为静态的,那么我会得到60。我不知道是怎么回事。
发布于 2017-12-21 17:55:05
像这样使用,
@Override
protected void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
mProgress = savedInstanceState.getInt("progress");
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("progress", mProgress);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState != null) {
mProgress = savedInstanceState.getInt("progress");
}
}https://stackoverflow.com/questions/47922135
复制相似问题