首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android onRestoreInstanceState覆盖值

Android onRestoreInstanceState覆盖值
EN

Stack Overflow用户
提问于 2014-01-17 16:09:24
回答 1查看 212关注 0票数 1

所以我对onSaveInstanceState和onRestoreInstanceState有个奇怪的问题。下面是我到现在为止所拥有的,而且工作得很好。方法的调用,值保存和恢复都很好。

代码语言:javascript
复制
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  // Always call the superclass so it can restore the view hierarchy
  super.onRestoreInstanceState(savedInstanceState);

  // Restore value of members from saved state
  mRawImgPath = savedInstanceState.getString(SAVE_STATE_RAW_IMG_PATH);
  mProImgPath = savedInstanceState.getString(SAVE_STATE_PRO_IMG_PATH);
}

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  // Always call the superclass so it can save the view hierarchy state
  super.onSaveInstanceState(savedInstanceState);

  // Save the user's current game state
  savedInstanceState.putString(SAVE_STATE_RAW_IMG_PATH, mRawImgPath);
  savedInstanceState.putString(SAVE_STATE_PRO_IMG_PATH, mProImgPath);
}

现在,我想用我希望保存的第三个值来增强代码。

代码语言:javascript
复制
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  // Always call the superclass so it can restore the view hierarchy
  super.onRestoreInstanceState(savedInstanceState);

  // Restore value of members from saved state
  mRawImgPath = savedInstanceState.getString(SAVE_STATE_RAW_IMG_PATH);
  mProImgPath = savedInstanceState.getString(SAVE_STATE_PRO_IMG_PATH);
  mLastState = savedInstanceState.getString(SAVE_STATE_LAST_STATE);
}

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  // Always call the superclass so it can save the view hierarchy state
  super.onSaveInstanceState(savedInstanceState);

  // Save the user's current game state
  savedInstanceState.putString(SAVE_STATE_RAW_IMG_PATH, mRawImgPath);
  savedInstanceState.putString(SAVE_STATE_PRO_IMG_PATH, mProImgPath);
  savedInstanceState.putString(SAVE_STATE_LAST_STATE, mLastState);
}

方法仍然被完美地调用,但是它不再恢复正确的值了。我没有将正确的值还原到正确的变量中,而是将SAVE_STATE_LAST_STATE还原到所有三个vars中(mRawImgPathmProImgPathmLastState)。

我可以说的是,他们在onSaveInstanceState()保存时有正确的值,所以他们在保存时不会有错误的值。另外,我不会在onCreate()中更改值,否则第一个解决方案(只有两个变量)也不能工作。我真的不知道那里发生了什么。

如果感兴趣的话,下面是声明:

代码语言:javascript
复制
// Vars
GPSTracker gps;
String mRawImgPath = ""; // Path of the raw image
String mProImgPath = ""; // Path of the processed image
String mLastState = "";

// Save state variables
static final String SAVE_STATE_RAW_IMG_PATH = "";
static final String SAVE_STATE_PRO_IMG_PATH = "";
static final String SAVE_STATE_LAST_STATE = "";

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-17 16:16:01

代码语言:javascript
复制
static final String SAVE_STATE_RAW_IMG_PATH = "";
static final String SAVE_STATE_PRO_IMG_PATH = "";
static final String SAVE_STATE_LAST_STATE = "";

您有空名,请更改为:

代码语言:javascript
复制
static final String SAVE_STATE_RAW_IMG_PATH = "SAVE_STATE_RAW_IMG_PATH";
static final String SAVE_STATE_PRO_IMG_PATH = "SAVE_STATE_PRO_IMG_PATH";
static final String SAVE_STATE_LAST_STATE = "SAVE_STATE_LAST_STATE";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21190514

复制
相关文章

相似问题

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