【问题标题】:Why is my Parcelable Creator not working?为什么我的 Parcelable Creator 不工作?
【发布时间】:2017-01-11 16:00:16
【问题描述】:

我未能让我的班级 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();

【问题讨论】:

    标签: c# android xamarin parcelable


    【解决方案1】:
    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吗?

    【讨论】:

    • 是的,我确实忘记设置它。哇,这只是一件小事,但我找不到它。谢谢!它不再有编译错误
    猜你喜欢
    • 2016-04-21
    • 2014-05-17
    • 2017-09-20
    • 2012-04-14
    • 2016-09-15
    • 2012-02-14
    • 2012-08-10
    • 2013-07-27
    • 1970-01-01
    相关资源
    最近更新 更多