Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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_Java_Android - Fatal编程技术网

Java 保存视图类中所有字段的状态-Android

Java 保存视图类中所有字段的状态-Android,java,android,Java,Android,如何保存扩展视图的类中所有字段的状态 @Override protected Parcelable onSaveInstanceState() { Parcelable localState = super.onSaveInstanceState(); Bundle bundle = new Bundle(); bundle.putSerializable("gameEngine", this.gameEngine); bundle.putParcelable(

如何保存扩展视图的类中所有字段的状态

@Override
protected Parcelable onSaveInstanceState() {
    Parcelable localState = super.onSaveInstanceState();

    Bundle bundle = new Bundle();
    bundle.putSerializable("gameEngine", this.gameEngine);
    bundle.putParcelable("inherited", localState);
    return bundle;
}

@Override
protected void onRestoreInstanceState(Parcelable localState) {
    Bundle bundle = (Bundle) localState;
    this.gameEngine = ((GameEngine) bundle.getSerializable("gameEngine"));
    super.onRestoreInstanceState(bundle.getParcelable("inherited"));
}
这似乎无法保存字段


谢谢。

在单个视图对象中执行此操作可能不是最佳解决方案。从片段或包含视图的活动内部保存视图的状态会容易得多。片段和活动都提供了按照示例代码中使用的模式保留状态实例的方法。

将所有值放在一个数组中,然后手动恢复它们。
或者将它们存储在自定义类中

或者,如果只有几个值,请将它们逐个放入捆绑包中:

bundle.putString("1", value);
bundle.putString("2", value);
etc.

如何从活动内部执行此操作?使用onCreate和onSaveInstanceState。在你的例子中,他们以你想要的方式使用bundle。这个答案是正确的,但是对于需要存储大量变量的人来说,这可能不是最好的解决方案。我还发现您不能将多维数组放入捆绑包中。我必须创建一个算法,将多维数据展平为单个数据进行存储,然后再创建另一个算法将其重建为多维数据进行恢复。谢谢:)据我所知,这是唯一的办法。可以对多维数组使用putSerializable。请注意,通过Bundle的所有内容都被序列化(克隆),因此对其他活动的所有引用都将丢失。您可以使用静态变量来保存它们。对不起,我的回答太晚了,我来自欧洲。