我正在尝试从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
。为什么不允许我解析?我需要进行自定义序列化吗?
请帮忙!
答案 0 :(得分:1)
我猜测Part是你创建的一种类型?所以不要将Part视为数组
rhythm = new Part[savedInstanceState.getInt("numParts")];
您希望实例化一个新的Part对象,如下所示:
rhythm = new Part(savedInstanceState.getInt("numParts"));
其他假设:
答案 1 :(得分:0)
好吧我只是把它作为整个阵列而且它起作用了......我真的不知道为什么,但确实如此。谢谢你让我想通过整个阵列。 @Error 454