Android在Parcelable类对象中保存Activity状态

Dol*_*rma 0 java android parcel parcelable

在我的应用程序中我onSaveInstanceState在每个活动和文件中很多,现在在阅读此链接后创建Parcelable类我不能使用它并保存到这个类中

默认onSaveInstanceState是:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putBoolean("IsShowingExitDialogs", mIsShowingExitDialogs);
    savedInstanceState.getInt("LastMenuItemSelected", mLastMenuItemSelected);
}
Run Code Online (Sandbox Code Playgroud)

现在我不能使用下面这行保存IsShowingExitDialogsLastMenuItemSelectedParcable类:

savedInstanceState.putParcelable("IsShowingExitDialogs", mIsShowingExitDialogs);
savedInstanceState.putParcelable("IsShowingExitDialogs", mLastMenuItemSelected);
Run Code Online (Sandbox Code Playgroud)

Y.S*_*Y.S 5

Parcelable是一个应用于类的接口.它适用于对象,而在您的情况下,您尝试保存整数布尔值,两者都是基本类型.如果你真的想这样做,你需要将它们包装在一个实现的类中Parcelable.然后这将工作.

编辑:

1.savedInstanceState保存onSavedInstanceState()返回中onCreate()的时候Activity重新创建,让您重新使用以前保存的数据.

2.您需要创建一个自定义类MyClass extends Parcelable,实现接口方法并将其保存为:

MyClass myClass = new MyClass(mIsShowingExitDialogs, mLastMenuItemSelected);
savedInstanceState.putParcelable("myClass", myClass);
Run Code Online (Sandbox Code Playgroud)