Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-当对象不可序列化或不可打包时将对象传递给活动_Android_Object_Android Activity - Fatal编程技术网

Android-当对象不可序列化或不可打包时将对象传递给活动

Android-当对象不可序列化或不可打包时将对象传递给活动,android,object,android-activity,Android,Object,Android Activity,我想将一个对象传递给另一个活动。“我的对象”不可打包或序列化,因为它包含的属性是本身不可打包或序列化的对象。这些属性的属性不可打包或序列化。这些性质,这些性质,等等。。。不可打包或序列化 我无权将代码修改为这些属于属性的子对象。因此,我没有权限使它们实现可序列化或可打包 我可以考虑将一个对象传递给另一个活动吗?传递您的活动< /Cord>一个键串,它可以用来从一个单独的类中检索对象,例如扩展的应用程序< /Cl>类。活动将在配置更改(例如旋转)后再次从那里检索对象。不要忘了确保活动优雅地处理返回

我想将一个对象传递给另一个活动。“我的对象”不可打包或序列化,因为它包含的属性是本身不可打包或序列化的对象。这些属性的属性不可打包或序列化。这些性质,这些性质,等等。。。不可打包或序列化

我无权将代码修改为这些属于属性的子对象。因此,我没有权限使它们实现可序列化或可打包


我可以考虑将一个对象传递给另一个活动吗?

传递您的<代码>活动< /Cord>一个键串,它可以用来从一个单独的类中检索对象,例如扩展的<代码>应用程序< /Cl>类。

活动
将在配置更改(例如旋转)后再次从那里检索对象。不要忘了确保
活动
优雅地处理返回的对象为
null
的情况,以防在删除所有数据后恢复应用程序。

尽管这是一个丑陋的解决方案,但您可以将它们序列化为JSON。如果您对这些对象具有公共访问权限。例如,使用Gson做这样的事情,然后将JSON字符串作为Intent extra传递。另一种解决方案是将它们保存在应用程序对象中。(更加丑陋)


如果对象无法序列化(例如,保持持久TCP连接的对象),则需要将其存储在某个单例对象或任何其他可以从应用程序角度引用的对象中。

除了Trevors回答之外,我还想提供更多详细信息

有两种推荐的方法可以做到这一点。详细讨论时,请查看此内容

  • 使用Singleton类在切换活动时保存数据。从调用者向其写入数据,并由被调用者从中读取数据

  • 扩展类,该类是保存应用程序全局状态的基类

一般的想法是将数据保存到一个独立于活动生命周期且可以全局访问的位置


以下是如何使用这些方法。

在SharedReferences中保存对象的数据成员在另一个活动中访问它们您可以将它们放入数据库,然后通过传入主键在另一个活动中获取它们吗?