Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android在Parcelable类对象中保存活动状态_Java_Android_Parcelable_Parcel - Fatal编程技术网

Java Android在Parcelable类对象中保存活动状态

Java Android在Parcelable类对象中保存活动状态,java,android,parcelable,parcel,Java,Android,Parcelable,Parcel,在我的应用程序中,我在每个活动和文件中都有许多onSaveInstanceState,现在在阅读创建Parcelable类后,我无法使用该类并保存到该类中 SaveInstanceState的默认值为: @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); savedInstanceState.put

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

SaveInstanceState的默认值为:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putBoolean("IsShowingExitDialogs", mIsShowingExitDialogs);
    savedInstanceState.getInt("LastMenuItemSelected", mLastMenuItemSelected);
}
现在,我无法使用下面这一行将
IsShowingExitDialogs
LastMenuItemSelected
保存到可分配类别:

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

Parcelable
是应用于类的接口。它适用于对象,而在您的示例中,您试图保存一个整数和一个布尔值,这两种类型都是基本类型。如果您真的想这样做,您需要将它们封装在实现
Parcelable
的类中。这样就行了

编辑:

1.当重新创建
活动时,在
onSavedInstanceState()中保存的
savedInstanceState
将在
onCreate()中返回,允许您重用以前保存的数据

2.您需要创建一个自定义类
MyClass extends Parcelable
,实现接口方法并按如下方式保存:

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

Parcelable
是应用于类的接口。它适用于对象,而在您的示例中,您试图保存一个整数和一个布尔值,这两种类型都是基本类型。如果您真的想这样做,您需要将它们封装在实现
Parcelable
的类中。这样就行了

编辑:

1.当重新创建
活动时,在
onSavedInstanceState()中保存的
savedInstanceState
将在
onCreate()中返回,允许您重用以前保存的数据

2.您需要创建一个自定义类
MyClass extends Parcelable
,实现接口方法并按如下方式保存:

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

您不能将
savedInstanceState
保存到任何地方,
savedInstanceState
是一个对象,它保存您要保存的数据,可以在
onCreate()
中重新访问。您需要创建一个类
MyClass
,该类保存要保存的布尔值和整数,并在此类上实现
Parcelable
接口。然后将该类的一个实例保存在
savedInstanceState
对象中。请参阅已编辑的回答如果您不将
savedInstanceState
保存在任何地方,
savedInstanceState
是一个对象,它保存您要保存的数据,可在
onCreate()
中重新访问。您需要创建一个类
MyClass
,该类保存要保存的布尔值和整数,并在此类上实现
Parcelable
接口。然后将该类的一个实例保存在
savedInstanceState
对象中。你看到我的答案了吗?你从哪里得到这个答案的?你看到我的答案了吗?你从哪里弄到的?