无法从实例状态恢复对象:解析错误

时间:2012-07-09 23:13:58

标签: android parsing serialization

我正在尝试从savedInstanceState恢复一个对象数组。我在这里单独添加了Bundle :(节奏是对象数组)

@Override
public void onSaveInstanceState(Bundle outState){
    outState.putInt("numParts",rhythm.length);
    for(int index = 0;index<rhythm.length;++index){
        outState.putSerializable(""+index,rhythm[index].beat);
    }
    super.onSaveInstanceState(outState);
}

当调用onRestoreInstanceState()方法时,我尝试在此处为我的rhythm数组分配实例状态中的对象:(它不为空)

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState){
    rhythm = new Part[savedInstanceState.getInt("numParts")];
    for(int index = 0; index<rhythm.length;++index){
         Object middleMan =savedInstanceState.getSerializable(""+index);
         if(middleMan==null){
             System.out.println("It's null...");
         }
    rhythm[index]=(Part) middleMan;
    }
}

每当我解析ClassCastException时,它会抛出Part。部分实现Serializable。为什么不允许我解析?我需要进行自定义序列化吗? 请帮忙!

2 个答案:

答案 0 :(得分:1)

我猜测Part是你创建的一种类型?所以不要将Part视为数组

rhythm = new Part[savedInstanceState.getInt("numParts")];

您希望实例化一个新的Part对象,如下所示:

rhythm = new Part(savedInstanceState.getInt("numParts"));

其他假设:

  1. 节奏是一个成员变量
  2. Part的构造函数采用单个整数

答案 1 :(得分:0)

好吧我只是把它作为整个阵列而且它起作用了......我真的不知道为什么,但确实如此。谢谢你让我想通过整个阵列。 @Error 454