【发布时间】:2016-06-01 15:40:36
【问题描述】:
我正在尝试将在 Xamarin 中创建的对象发送到我在 Android Studio 中创建的应用程序。但是,我遇到了 ClassLoader Not Found 的问题。 ClassLoader 肯定是与对象一起发送的(我使用 bundle.SetClassLoader(MyObject.Class.ClassLoader)。我认为问题源于每个平台中的类不同,因为一个是用 Java 编写的,而另一个是用 C# 编写的. 尽管语言不同,如何确保课程相同?
这里是 Java 类:
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable {
private String firstName;
private String lastName;
private int age;
public int describeContents()
{
return 0;
}
public void writeToParcel(Parcel dest,int flags)
{
dest.writeString(firstName);
dest.writeString(lastName);
dest.writeInt(age);
}
public String getName()
{
return firstName +" " + lastName;
}
public int getAge()
{
return age;
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator(){
public Person createFromParcel(Parcel in){
return new Person(in);
}
public Person[] newArray(int size)
{
return new Person[size];
}
};
public Person(Parcel in)
{
firstName = in.readString();
lastName = in.readString();
age = in.readInt();
}
} 这是 C# 类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Java.Interop;
using Object = Java.Lang.Object;
namespace Greetings.Droid
{
public class Person : Object,IParcelable
{
[ExportField("Creator")]
public static CREATOR InitializeCreator()
{
return new CREATOR();
}
public String firstName { get; set; }
public String lastName { get; set; }
public int age { get; set; }
public Person(String firstName, String lastName, int age)
{
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String getName()
{
return firstName + " " + lastName;
}
public int getAge()
{
return age;
}
public void WriteToParcel(Parcel dest, ParcelableWriteFlags flags)
{
dest.WriteString(firstName);
dest.WriteString(lastName);
dest.WriteInt(age);
}
public int DescribeContents()
{
return 0;
}
}
public class CREATOR: Object,IParcelableCreator
{
public Object CreateFromParcel(Parcel source)
{
return new Person(source.ReadString(), source.ReadString(),source.ReadInt());
}
public Object[] NewArray(int size)
{
return new Object[size];
}
}
}
【问题讨论】:
标签: java c# android xamarin xamarin.android