1
所以我有一个奇怪的问题onSaveInstanceState和onRestoreInstanceState。 以下是我到目前为止所做的工作,并且完美地工作。通常称为方法,值保存并恢复正常。Android 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
恢复到所有三个变量(mRawImgPath
,mProImgPath
和mLastState
)。
我可以说的是,他们在保存在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 = "";
任何帮助表示赞赏。
*荡*美丽。我不记得我必须声明变量的名称为值。非常感谢。 – user3207296
不客气:) – isah