- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 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
最佳答案
好吧,您只需使用任何生成 string
或 byte[]
的序列化器序列化 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/
我目前正在努力保存更大的对象结构,其中包含我正在处理的应用程序中的“项目”所需的所有数据。数据是诸如图片、流文档以及更基本的数据类型之类的东西。 现在,我目前的方法是在我需要保存的对象中包含的所有类上
我有一个类,其中包含我正在序列化的一些数据: [Serializable] public class SomeData { public int NumericField; publi
我必须使用一个旧应用程序,该应用程序使用 binaryFormatter 将应用程序数据序列化为文件流(例如在名为“data.oldformat”的文件中) 没有任何优化,主类已用属性标记 publi
考虑以下类的 POD 类型: public class Price { public decimal OfferPrice { get; set; } } 此类的对象是从服务器检索的,所以让我们用可序
我打算使用序列化来做克隆。我必须让我的类 ISerializable。但是它的父类(super class)和所有引用的变量类呢?我需要让它们全部 ISerializable 吗? 如果我使用 ISe
ISerializable 接口(interface)只提供了一种序列化对象的方法。反序列化进程由构造函数管理。 问题是,构造函数不能返回实例,因为构造函数创建了一个新实例。 在我的实现中,有几个属性
我们的任务非常简单,我们有一个对象图,其中每个对象 (IDItem) 都有一个唯一的 ID。对象图存在两次,在客户端和服务器机器上。 现在我们将一些可序列化的命令传递给服务器。该命令具有一些 IDIt
我正在编写自己的 IFormatter 实现,但我想不出一种方法来解决两种都实现 ISerializable 的类型之间的循环引用。 这是通常的模式: [Serializable] class Foo
我们有一个遗留类A,它是[Serializable],但不是ISerializable。由于各种原因,必须修补此类以实现 ISerializable。 问题是我们仍然需要能够加载旧的保存文件,这些文件
我想为包含相似类型子项列表的 C# 类实现 ISerializable。考虑以下示例: using System; using System.Collections.Generic; using Sy
我很难理解 ISerializable 接口(interface)的必要性......我想我在这个主题中遗漏了一些非常重要的东西,所以如果有人能帮助我,我将不胜感激。 这很好用- [Serializa
我有扩展方法 public static T DeepClone(this T source) where T : ISerializable { .. } 当我添加“where T : I
我正在尝试使用 Iserializable 在 Android 中传递对象,但它返回“无法从 native 句柄激活类型的实例”异常。 下面是我的代码。 [FBUserParcel.cs] using
我正在编写自定义序列化程序,我刚刚完成了用于处理 ISerializable.GetObjectData 的部分的实现。但是当我去反序列化信息并将其重新应用于图形时,我没有看到 Set-ObjectD
我正在阅读 msdn 上的自定义序列化文章:http://msdn.microsoft.com/en-us/library/ty01x675%28VS.80%29.aspx 里面提到了实现自定义序列化
我必须在派生类中实现 ISerializable(以执行一些自定义序列化/反序列化),但父类被标记为 [Serializable]。序列化“有效”(我可以序列化和反序列化而不会出现运行时错误)但看起来
我有一组用户定义的类型,它们已经实现了 ISerializable 接口(interface),现在我想将它们托管在服务器端应用程序中,并通过使用 DataContract 属性标记它们来向客户端公开
我有一个看起来像这样的包装列表: [JsonObject(MemberSerialization.Fields)] public class OrderManager : IEnumerable, I
我对继承类中 ISerializable 的正确实现有疑问。 我有两个类,AbstractBaseClass 及其实现 BaseClass。在实现派生自 BaseClass 的 FinalClass
我有一个类通过 XLINQ 实现它自己的(反)序列化,我会喜欢让我类(class)的客户尝试对我的类(class)进行 XMLSerialze而是调用了我的 XLINQ 方法。 这可能吗? 最佳答案
我是一名优秀的程序员,十分优秀!