首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java.IO.ISerializable Xamarin

Java.IO.ISerializable Xamarin
EN

Stack Overflow用户
提问于 2014-11-30 06:13:53
回答 1查看 1.8K关注 0票数 5

我试图使用I序列化在Android中传递对象,但它返回我“无法从本机句柄激活类型的实例”异常。

下面是我的密码。

FBUserParcel.cs

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-30 12:35:57

您可以轻松地解决这个问题,只需将Xamarin.Facebook.Model.IGraphUser与生成stringbyte[]的任何序列化程序串行化即可。

例如,如果您使用Newtonsoft的Json.NET组件,您的代码将如下所示:

代码语言:javascript
复制
Xamarin.Facebook.Model.IGraphUser fbUser;
var fbUserSerialized = JsonConvert.SerializeObject (fbUser);
intent.PutExtra ("fbUser");

和反序列化:

代码语言:javascript
复制
if (Intent.HasExtra ("fbUser")) {
    var fbUserSerialized = Intent.GetStringExtra ("fbUser");
    var fbUser = JsonConvert.DeserializeObject<Xamarin.Facebook.Model.IGraphUser>(fbUserSerialized);
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27210593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档