Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XamarinAndroid&;AIDL:Java.Lang.IllegalStateException:&x27;Bundle的坏幻数_Android_Xamarin_Aidl - Fatal编程技术网

XamarinAndroid&;AIDL:Java.Lang.IllegalStateException:&x27;Bundle的坏幻数

XamarinAndroid&;AIDL:Java.Lang.IllegalStateException:&x27;Bundle的坏幻数,android,xamarin,aidl,Android,Xamarin,Aidl,我正在使用Xamarin Android连接Android服务。在自动生成.aidl文件的存根并运行项目后,我遇到了以下错误 “Java.Lang.IllegalStateException:'捆绑包的无效幻数” 我使用的是一个包含两个浮点值的可分配类 public class TLGeoPoint : Java.Lang.Object, IParcelable { public float lat { get; set; } public float lng { get; s

我正在使用Xamarin Android连接Android服务。在自动生成.aidl文件的存根并运行项目后,我遇到了以下错误

“Java.Lang.IllegalStateException:'捆绑包的无效幻数”

我使用的是一个包含两个浮点值的可分配类

public class TLGeoPoint : Java.Lang.Object, IParcelable
{
    public float lat { get; set; }
    public float lng { get; set; }

    public TLGeoPoint()
    {

    }

    public TLGeoPoint(Parcel parcel)
    {
        ReadFromParcel(parcel);
    }

    [ExportField("CREATOR")] // Need a reference to Mono.Android.Export
    public static TLGeoPointCreator InitializeCreator()
    {
        return new TLGeoPointCreator();
    }

    public int DescribeContents()
    {
        return 0;
    }

    public void WriteToParcel(Parcel dest, [GeneratedEnum] ParcelableWriteFlags flags)
    {
        dest.WriteFloat(lat);
        dest.WriteFloat(lng);
    }

    public void ReadFromParcel(Parcel parcel)
    {
        lat = parcel.ReadFloat();
        lng = parcel.ReadFloat();
    }
}

public class TLGeoPointCreator : Java.Lang.Object, IParcelableCreator
{
    public Java.Lang.Object CreateFromParcel(Parcel source)
    {
        TLGeoPoint objGeo = new TLGeoPoint();
        objGeo.lat = source.ReadFloat();
        objGeo.lng = source.ReadFloat();
        return objGeo;
    }

    public Java.Lang.Object[] NewArray(int size)
    {
        return new Java.Lang.Object[size];
    }
}
我想知道Xamarin AIDL代码生成中是否存在导致Bag Magic Number异常的bug,或者是我缺少添加的东西


请注意,该服务接受回调函数并通过该回调发送数据。我在调用回调之前收到此错误

似乎Xamarin AIDL生成器中存在错误

同时,在Xamarin方面的错误解决之前,您有几个选择

  • 删除生成的AIDL接口,删除*.AIDL文件,手工编写IPC编组代码。嗯
  • 使用Messenger+捆绑包,如中所述。每种方法都会有一些样板,但这种方法总体上是可用的
  • 或者,将IPC代码移动到单独的Java库模块。如果您这样做,您应该能够使用官方的aidl工具或通过其他方式(例如使用我自己为此编写的工具)生成IPC代理实现

  • 似乎Xamarin AIDL生成器中存在错误

    同时,在Xamarin方面的错误解决之前,您有几个选择

  • 删除生成的AIDL接口,删除*.AIDL文件,手工编写IPC编组代码。嗯
  • 使用Messenger+捆绑包,如中所述。每种方法都会有一些样板,但这种方法总体上是可用的
  • 或者,将IPC代码移动到单独的Java库模块。如果您这样做,您应该能够使用官方的aidl工具或通过其他方式(例如使用我自己为此编写的工具)生成IPC代理实现

  • 我猜这是在几年前的另一篇Stackoverflow文章中报道的。我不认为微软已经着手解决这个问题。我想这是在几年前的另一篇Stackoverflow文章中报道的。我认为微软并没有致力于解决这个问题。