android TextView onRestoreInstanceState获取错误的值

时间:2017-12-21 09:47:27

标签: android onsaveinstancestate

我的代码是这样的:

    @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());
    }

mProgress传递给savedState中的onSaveInstanceState并且onRestoreInstanceState中获得0时,savedState.mProgress = mProgress值为60。

如果我修改代码 在onSavedInstanceStatesavedState.mProgress = 10 onRestoreInstanceState {}} {} mProgress {/ 1}}。{/ 1}}

太奇怪了。如果我使OrderedDict静态然后我得到60.我不知道是什么问题。

1 个答案:

答案 0 :(得分:1)

像这样使用,

@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");            
    }
}