gpt4 book ai didi

Java.IO.ISerializable Xamarin

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:26 24 4
gpt4 key购买 nike

我正在尝试使用 Iserializable 在 Android 中传递对象,但它返回“无法从 native 句柄激活类型的实例”异常。

下面是我的代码。

[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;

}
}
}

[主 Activity .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

最佳答案

好吧,您只需使用任何生成 stringbyte[] 的序列化器序列化 Xamarin.Facebook.Model.IGraphUser 即可轻松解决此问题.
例如,如果您使用 Newtonsoft's 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);
}

关于Java.IO.ISerializable Xamarin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27210593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com