Я использую Xamarin Android для подключения к услуге Android. После того, как я автоматически сгенерировал заглушки для файлов .aidl и запустил проект, я обнаружил следующую ошибку:
"Java .Lang.IllegalStateException: 'Bad magi c number for Bundle"
![enter image description here](https://i.stack.imgur.com/h6G22.png)
Я использую класс 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 Magi c Number или что-то, чего я не могу добавить.
Обратите внимание, что служба принимает функцию обратного вызова и отправляет данные через этот обратный вызов. Я получаю эту ошибку до вызова обратного вызова.