【发布时间】:2020-02-05 10:43:26
【问题描述】:
我正在使用 Xamarin Android 连接 Android 服务。在我为 .aidl 文件自动生成存根并运行项目后,我遇到了以下错误。
"Java.Lang.IllegalStateException: 'Bundle 的魔数错误"
我正在使用一个包含两个浮点值的 Parceable 类。
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 异常的错误,或者我缺少添加的内容。
请注意,服务接受回调函数并通过该回调发送数据。我在调用回调之前收到此错误。
【问题讨论】: