【问题标题】:Bundle array of arrays is not Working - Android数组的捆绑数组不起作用 - Android
【发布时间】:2012-05-24 13:10:27
【问题描述】:

我试图捆绑一个数组数组,但没有工作。以下是代码片段以便更好地理解:

声明和初始化变量

Inversor[][] reg_equipment= new Inversor[7][5];
for(int i=0; i<7; i++)
{
  for(int j=0;j<5;j++)
  {
    reg_equipment[i][j]= new Inversor();
  }
}
//....

将变量放入包中

bundle.putSerializable("reg_equipment", reg_equipment);

Intent myIntent =new  Intent(RegisterEquipmentInversor.this,RegisterEquipmentMain.class);
                myIntent.putExtras(bundle);

                startActivity(myIntent);

此时,reg_equipment 中填充了 Inversor [Inversor[0],Inversor[1]....,Inversor[6]] 并且在这些里面有 更多 Inversor

但是当我去“获取”另一个类中的包时

reg_equipment = (Inversor[][]) extras.getSerializable("reg_equipment");

这是 de reg_equipment 内部的内容 - [Object[0],Object[1],...,[Object[6]] 并且 在这些对象内部有 Inversors强>。为什么会发生这种情况?我该如何解决?

类 Inversor 实现了 Serializable

谢谢

【问题讨论】:

    标签: android arrays bundle


    【解决方案1】:

    您应该尝试创建一个只有一个属性的 Serializable 类,该属性应该是您的 Inversor 数组数组,并将该对象放入您的意图中。 像

    public class InversorArrays implements Serializable {
        public final static int serialVersionUID = //let eclipse generate your uid
        public Inversor[][] myArray = null;
        public InversorArrays (Inversor[][] _myArray){
            this.myArray = _myArray;
        }
    }
    

    然后,在您的活动中,创建一个 InversorArrays 实例并将其传递给意图

    当然,Inversor 及其属性也应该是可序列化的。

    这种解决方法有时为我节省了很多时间,并解决了类型转换和转换问题

    【讨论】:

    • 听起来是个好主意。我会尽力告诉你答案!
    • 为什么我需要 serialVersionUID ?
    • 当你声明一个实现可序列化的类时,它应该由eclipse自动添加。
    • 成功了!非常感谢 ;) 为什么你可以捆绑一个简单的数组但不能正确捆绑一个数组数组,这仍然是个谜。
    【解决方案2】:

    我不确定,但是您是否使投资者类可序列化?我认为,如果我们能够对投资者类有一个基本的了解,那可能会带来一些启示。

    我会说从让 Investor 可序列化开始。 http://www.tutorialspoint.com/java/java_serialization.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      相关资源
      最近更新 更多