调用onSaveInstanceState时,有什么方法可以“捕获”应用程序的快照吗?
否则,我必须保存每个布尔值并对其进行跟踪,并尽量不要忘记某些内容,例如:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (userAvatar != null) {
outState.putString("userAvatar", userAvatar.toString());
avatarAlreadyProvided = true;
}
if (sexIsOK) {
outState.putBoolean("sexIsOK", true);
}
if (passwordIsOk) {
outState.putBoolean("passwordIsOk", true);
}
if (passwordAgainIsOk) {
outState.putBoolean("passwordAgainIsOk", true);
}
if (passwordsMatch) {
outState.putBoolean("passwordsMatch", true);
}
if (userHasProvidedOwnPhoto != false) {
outState.putBoolean("userHasProvidedOwnPhoto", true);
outState.putBoolean("avatarAlreadyProvided", true);
}
if (mImageBitmap != null) {
outState.putParcelable("mImageBitmap", mImageBitmap);
avatarAlreadyProvided = true;
}
if (usernameIsOk) {
outState.putBoolean("usernameIsOk", true);
}
if (allSignupFieldsProperlyFilled) {
outState.putBoolean("allSignupFieldsProperlyFilled", true);
}
}
@Override
protected void onRestoreInstanceState(Bundle outState) {
super.onRestoreInstanceState(outState);
userHasProvidedOwnPhoto = outState.getBoolean("userHasProvidedOwnPhoto");
avatarAlreadyProvided = outState.getBoolean("avatarAlreadyProvided");
mImageBitmap = outState.getParcelable("mImageBitmap");
userAvatar = outState.getString("userAvatar");
iUserAvatar.setImageBitmap(mImageBitmap);
allSignupFieldsProperlyFilled = outState.getBoolean("allSignupFieldsProperlyFilled");
usernameIsOk = outState.getBoolean("usernameIsOk");
passwordsMatch = outState.getBoolean("passwordsMatch");
passwordAgainIsOk = outState.getBoolean("passwordAgainIsOk");
passwordIsOk = outState.getBoolean("passwordIsOk");
sexIsOK = outState.getBoolean("sexIsOK");
}
我总是忘记一些东西,然后把它弄乱了。必须有其他方法...。
将变量包装到Java类中并使用序列化。您可以使用Gson进行Json序列化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句