繁体   English   中英

Android onRestoreInstanceState覆盖值

[英]Android onRestoreInstanceState overwriting values

所以我对onSaveInstanceState和onRestoreInstanceState有一个奇怪的问题。 以下是我到目前为止所做的,并且运行良好。 通常调用的方法,保存和恢复值就很好。

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

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

@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还原到了所有三个变量( mRawImgPathmProImgPathmLastState )中。

我可以说的是,在onSaveInstanceState()保存时它们具有正确的值,因此在保存时它们不仅具有错误的值。 另外,我不会在onCreate()处更改值,否则第一个解决方案(只有两个变量)将无法正常工作。 我真的不知道那里发生了什么。

如果有兴趣的话,这里是声明:

// 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 = "";

任何帮助表示赞赏。

static final String SAVE_STATE_RAW_IMG_PATH = "";
static final String SAVE_STATE_PRO_IMG_PATH = "";
static final String SAVE_STATE_LAST_STATE = "";

您那里有空名称,请更改为:

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";

暂无
暂无

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

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