保存2d自定义对象数组onSaveInstanceState

时间:2014-05-19 01:52:23

标签: android arrays bundle parcelable

您好我试图在方法onSaveInstanceState内的Bundle中保存自定义对象的二维数组,以便在用户旋转屏幕时保存自定义对象数组 但我不知道如何实现它..如果可能的id就像一个" easy"解决方案......谢谢

这是自定义对象的类,我试图添加工具Parcelable&方法,但不确定该部分是否正确:

package com.example.game
import android.os.Parcel;
import android.os.Parcelable;
//hacemos el implements parcelable para que se puede guardar en el savedinstance
public class NumeroCarton implements Parcelable  {
    protected int numero;
    protected boolean numacertado;
    public NumeroCarton(int numero) {
        this.numacertado =false;
        this.numero = numero;
    }



    public int getNumero() {
        return numero;
    }
    public void setNumero(int numero) {
        this.numero = numero;
    }
    public boolean isNumacertado() {
        return numacertado;
    }
    public void setNumacertado(boolean numacertado) {
        this.numacertado = numacertado;
    }


    ////parcelable  :

    private NumeroCarton(Parcel in) {
        numero = in.readInt();
    }

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(numero);

    }

       public static final Parcelable.Creator<NumeroCarton> CREATOR
       = new Parcelable.Creator<NumeroCarton>() {
   public NumeroCarton createFromParcel(Parcel in) {
       return new NumeroCarton(in);
   }

   public NumeroCarton[] newArray(int size) {
       return new NumeroCarton[size];
   }
};
}

好的,在我想要保存的对象的活动里面,它的micarton,一个二维数组 我在上面写的课程:

NumeroCarton[][] micarton=new NumeroCarton[5][3];

我想将它保存在onSaveInstanceState方法的包中:

public void onSaveInstanceState(Bundle outInstance) {
        super.onSaveInstanceState(outInstance);
        outInstance.putInt(STATE_PUNTOS, puntos);


//This is my problem: 
outInstance.putParcelable(STATE_MICARTONN, micarton);

       //The method putParcelable(String, Parcelable)
// in the type Bundle is not  //applicable for the arguments 
//(String, NumeroCarton[][])
//Neither outInstance.putParcelableArray[](STATE_MICARTONN, micarton)

}

2 个答案:

答案 0 :(得分:0)

我认为如果你使自定义类可序列化它将起作用。

答案 1 :(得分:0)

还有另一个简单的解决方案,尝试将第二个数组转换为csv字符串,如下所示:

data11,data12,data13
data21,data22,data23
....

以这种格式,您可以轻松地将第二个数组转换为字符串并向后转换