简体   繁体   English

android TextView onRestoreInstanceState获取错误的值

[英]android TextView onRestoreInstanceState get wrong value

My code is like this: 我的代码是这样的:

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

The mProgress value is 60 when I pass it to savedState in onSaveInstanceState and I get 0 in onRestoreInstanceState . mProgress值是60,当我把它传递给savedStateonSaveInstanceState和我得到0 onRestoreInstanceState

if I modify the code savedState.mProgress = mProgress in onSavedInstanceState to savedState.mProgress = 10 then I got 10 in onRestoreInstanceState . 如果我修改代码savedState.mProgress = mProgressonSavedInstanceStatesavedState.mProgress = 10然后我在得到了10 onRestoreInstanceState

It's so weird. 好奇怪 if I make the mProgress static then I get 60. I don't know what's the matter. 如果我将mProgress静态,则得到60。我不知道怎么回事。

Use like this, 这样使用

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM