2015-03-03 87 views
0

在我的应用程序中的每个活动和文件很多onSaveInstanceState,现在在读this link后创建Parcelable类我不能使用和保存到这个类的Android保存在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); 
+0

你看到我的答案吗?你在哪里与此达成? – 2016-05-07 11:46:22

回答

4

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

编辑:

savedInstanceState,你保存onSavedInstanceState()onCreate()返回时Activity被重建,让您重新使用以前保存的数据。

2.你需要创建一个自定义类MyClass extends Parcelable,实现接口的方法和保存这样的:

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

你不会在任何地方保存*'savedInstanceState','savedInstanceState'是一个保存你要保存的数据的对象,它可以在'onCreate()'中重新访问。你需要创建一个类MyClass来保存你想要保存的布尔值和整数,并在这个类上实现Parcelable接口。然后将这个类的一个实例保存在'savedInstanceState'对象中。见编辑的答案 – 2015-03-03 09:32:00