0

配列の配列をバンドルしようとしていますが、機能していません。理解を深めるために、抜粋したコードを次に示します。

変数の宣言と初期化

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");

これは reg_equipment の内部 - [Object[0],Object[1],...,[Object[6]]であり、これらのオブジェクトの内部には Inversors があります。なぜこれが起こるのですか?どうすれば修正できますか?

クラス Inversor は Serializable を実装します

ありがとう

4

2 に答える 2

3

プロパティが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とそのプロパティもシリアル化可能である必要があります。

この回避策により、型キャストと変換の問題で多くの時間と問題を節約できることがありました

于 2012-05-24T13:30:44.920 に答える
0

よくわかりませんが、投資家クラスをシリアル化できますか?投資家層の基本的な見方ができれば、少し光が当たると思います。

まず、Investorをシリアル化できるようにすることから始めます。http://www.tutorialspoint.com/java/java_serialization.htm

于 2012-05-24T13:30:40.233 に答える