0

我正在尝试从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解析为 a 时,它都会抛出 a 。Part部分实现Serializable。为什么不允许我解析?我需要进行自定义序列化吗?请帮忙!

4

2 回答 2

1

我猜 Part 是您创建的类型?所以不要把 Part 当作一个数组

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

你想像这样实例化一个新的 Part 对象:

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

其他假设:

  1. 节奏是成员变量
  2. Part 的构造函数采用单个整数
于 2012-07-09T23:32:53.473 回答
0

好吧,我只是把它作为整个阵列做,它起作用了……我真的不知道为什么,但它确实起作用了。感谢您给了我通过整个数组的想法。@错误 454

于 2012-07-10T00:00:36.400 回答