首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android TextView onRestoreInstanceState取值错误

android TextView onRestoreInstanceState取值错误
EN

Stack Overflow用户
提问于 2017-12-21 17:47:27
回答 1查看 155关注 0票数 0

我的代码是这样的:

代码语言:javascript
复制
    @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。我不知道是怎么回事。

EN

回答 1

Stack Overflow用户

发布于 2017-12-21 17:55:05

像这样使用,

代码语言:javascript
复制
@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");            
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47922135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档