为什么我的Parcelable Creator不工作?

时间:2017-01-11 03:45:04

标签: c# android xamarin parcelable

我没有让我的Class Parcelable,我不知道为什么

public class Set : Java.Lang.Object, IParcelable
{
    public string[] jugador { get; set; } = new string[2];
    public bool[] jugado { get; set; } = new bool[1] { false };
    public int[] games { get; set; } = new int[2] { 0, 0 };
    public int[] noforzados { get; set; } = new int[2] { 0, 0 };
    public int[] aces { get; set; } = new int[2] { 0, 0 };
    public int[] winners { get; set; } = new int[2] { 0, 0 };
    public int[] doblefaltas { get; set; } = new int[2] { 0, 0 };
    public int[] primeros { get; set; } = new int[2] { 0, 0 };
    public int[] primerosGanados { get; set; } = new int[2] { 0, 0 };
    public int[] segundos { get; set; } = new int[2] { 0, 0 };
    public int[] segundosGanados { get; set; } = new int[2] { 0, 0 };

    public int DescribeContents()
    {
        return 0;
    }

    public void WriteToParcel(Parcel parcel, ParcelableWriteFlags flags)
    {
        parcel.WriteStringArray(jugador);
        parcel.WriteBooleanArray(jugado);
        parcel.WriteIntArray(games);
        parcel.WriteIntArray(noforzados);
        parcel.WriteIntArray(aces);
        parcel.WriteIntArray(winners);
        parcel.WriteIntArray(doblefaltas);
        parcel.WriteIntArray(primeros);
        parcel.WriteIntArray(primerosGanados);
        parcel.WriteIntArray(segundos);
        parcel.WriteIntArray(segundosGanados);
    }

    public Set (string[] Jugador, int[] Games, int[] NoForzados, int[] Aces, int[] Winners, int[] DobleFaltas, int[] Primeros, int[] PrimerosGanados, int[] Segundos,
        int[] SegundosGanados)
    {
        jugador = Jugador; games = Games; noforzados = NoForzados; aces = Aces; winners = Winners; doblefaltas = DobleFaltas; primeros = Primeros;
        primerosGanados = PrimerosGanados; segundosGanados = SegundosGanados;
    }


    public class SetParcelableCreator : Java.Lang.Object, IParcelableCreator
    {
        public Java.Lang.Object CreateFromParcel(Parcel parcel)
        {
            return new Set(parcel.ReadStringArray(), parcel.ReadBooleanArray(), parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray()
                    , parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray();

        }

        public Java.Lang.Object[] NewArray(int size)
        {
            return new Java.Lang.Object[size];
        }
    }


    [ExportField("CREATOR")]
    public static SetParcelableCreator InitializeCreator()
    {
        return new SetParcelableCreator();
    }
}

显然,我在每个ReadBlahArray()都收到了编译错误,但我不知道出了什么问题。

public class SetParcelableCreator : Java.Lang.Object, IParcelableCreator
{
    public Java.Lang.Object CreateFromParcel(Parcel parcel)
    {
        return new Set(parcel.ReadStringArray(), parcel.ReadBooleanArray(), parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray()
                , parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray(), parcel.ReadIntArray();

1 个答案:

答案 0 :(得分:0)

return new Set(parcel.ReadStringArray(), parcel.ReadBooleanArray()...

目前

parcel.ReadBooleanArray()

构造函数中没有布尔数组

public Set (
    string[] Jugador, 
    int[] Games, 
    int[] NoForzados, 
    int[] Aces, 
    int[] Winners, 
    int[] DobleFaltas, 
    int[] Primeros, 
    int[] PrimerosGanados, 
    int[] Segundos,
    int[] SegundosGanados)

您是否忘了设置jugado