Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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 使用put/getSerializable的Android序列化_Java_Android_Serialization - Fatal编程技术网

Java 使用put/getSerializable的Android序列化

Java 使用put/getSerializable的Android序列化,java,android,serialization,Java,Android,Serialization,我试图在用户旋转android设备时保存类的状态。我想使用putSerializable和getSerializable函数来获取和设置android捆绑包中的类。该类的简化版本如下所示: public class State implements Serializable { public class Unit implements Serializable { private static final long serialVersionUID = 9107072458243

我试图在用户旋转android设备时保存类的状态。我想使用putSerializable和getSerializable函数来获取和设置android捆绑包中的类。该类的简化版本如下所示:

public class State implements Serializable
{
  public class Unit implements Serializable
  {
    private static final long serialVersionUID = 9107072458243854482L;
    private String mName;
    private int mCount; 
  }

  private static final long serialVersionUID = 2794811960095192070L;
  private ArrayList<Unit> mUnitArray = new ArrayList<Unit>(); 
}
这有什么理由不起作用吗


提前感谢。

您确定要将单元设置为非静态内部类吗?非静态intrnal类始终将外部对象作为隐式成员,并且在包含该数组的对象内部有一个数组似乎很奇怪…

可能不是您问题的答案,但是您可以通过添加
android:configChanges=“orientation”来防止活动在循环时重新启动
添加到清单文件中的活动标记。也许你不想要这个,但也许你想要,值得一试:)谢谢@Niek,这真的很有帮助。“我的许多活动都不需要重新启动,因此看起来它应该可以完成任务。@mibollma调用getSerializable不会重新填充arraylist mUnitArray。请使用ANDROID:configChanges并不能解决无法保存状态的问题。这只会让你的问题更加明显。用户几乎肯定会在其他情况下看到问题,例如如果你的应用程序进入后台,其进程在他们返回之前被终止。另外,如果用户插入键盘怎么办?有一种新的输入设备,因此配置发生了变化,现在您的活动被重新启动。或者屏幕大小改变。或区域设置更改。等等,谢谢你。我想在深入研究这个android项目之前,我应该先阅读一下Java。来自C++的,在另一个类中声明的类是相当标准的实践,在上面的例子中声明STD::vector不会是个问题。谢谢你的意见。
myBundle.putSerializable("StateManager", mState);

mState = (State)myBundle.getSerializable("StateManager");