我试图使用I序列化在Android中传递对象,但它返回我“无法从本机句柄激活类型的实例”异常。
下面是我的密码。
FBUserParcel.cs
using System;
using Android.OS;
using PlayCardLeh.Helpers;
namespace PlayCardLeh.Android
{
public class FBUserParcel:Java.Lang.Object, Java.IO.ISerializable
{
Xamarin.Facebook.Model.IGraphUser fbUser;
public FBUserParcel (Xamarin.Facebook.Model.IGraphUser user)
{
fbUser = user;
}
}
} MainActivity.cs
private async Task FindFBUser(Xamarin.Facebook.Model.IGraphUser user) {
if (user != null) {
Console.WriteLine ("GOT USER: " + user.Name);
try {
var t = await User.FindUserWithFBID (user);
}
catch(NotFound NotFound) {
RunOnUiThread (() => {
Intent i = new Intent (this,typeof (RegisterActivity));
FBUserParcel u = new FBUserParcel(user);
StartActivity (i);
});
}
}
else
Console.WriteLine ("Failed to get 'me'!");
}RegisterActivity.cs
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Register);
if (Intent.HasExtra ("fbUser")) {
var u = Intent.Extras;
u.GetSerializable ("fbUser");
}
}异常发生在"u.GetSerializable ("fbUser");“。对不起,我对Xamarin有点陌生,有人对使用Iserializable有经验吗?我在"FBUserParcel.cs“中漏掉了什么?
感谢Mug4n分享一个讨论同样问题的链接。http://forums.xamarin.com/discussion/451/communicate-with-iserializable
发布于 2014-11-30 12:35:57
您可以轻松地解决这个问题,只需将Xamarin.Facebook.Model.IGraphUser与生成string或byte[]的任何序列化程序串行化即可。
例如,如果您使用Newtonsoft的Json.NET组件,您的代码将如下所示:
Xamarin.Facebook.Model.IGraphUser fbUser;
var fbUserSerialized = JsonConvert.SerializeObject (fbUser);
intent.PutExtra ("fbUser");和反序列化:
if (Intent.HasExtra ("fbUser")) {
var fbUserSerialized = Intent.GetStringExtra ("fbUser");
var fbUser = JsonConvert.DeserializeObject<Xamarin.Facebook.Model.IGraphUser>(fbUserSerialized);
}https://stackoverflow.com/questions/27210593
复制相似问题