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

时间:2015-03-03 08:43:55

标签: java android parcelable parcel

在我的应用程序中,每个活动和文件中都有onSaveInstanceState个,现在在阅读this link创建Parcelable类之后,我无法使用它并保存到此类中

默认onSaveInstanceState是:

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

现在我无法使用以下行将IsShowingExitDialogsLastMenuItemSelected保存到Parcable类:

savedInstanceState.putParcelable("IsShowingExitDialogs", mIsShowingExitDialogs);
savedInstanceState.putParcelable("IsShowingExitDialogs", mLastMenuItemSelected);

1 个答案:

答案 0 :(得分:5)

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

修改

1。savedInstanceStateonSavedInstanceState()时,onCreate()中{<1}}会在Activity中返回<{1}}重新创建,允许您重复使用先前保存的数据。

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

MyClass myClass = new MyClass(mIsShowingExitDialogs, mLastMenuItemSelected);
savedInstanceState.putParcelable("myClass", myClass);