比如将一个完整的非序列化类从一个活动传递给另一个活动?

时间:2014-12-12 18:42:49

标签: java android android-activity serialization

我有一个名为" Core"它包含许多类,如"路径","会话"等等。我在活动1中,当传递活动2时,我重新加载所有核心数据? (有很多),我需要通过intent.putExtras(Bundle)通过各种数据传递数据?有没有办法通过"核心"类?我试图这样做"核心"是可序列化的,但编译器告诉我不可能转换类可序列化。我必须收取"核心"每当改变活动时上课?没有这么慢的导航?从互联网获得的大多数核心数据以及许多其他非常缓慢的数学计算,我认为我可以在活动1中做出一个独特的外观,并且在所有数据通过参数输出之后但是不起作用:(

Intent intent = new Intent(this, ActivityPanel1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Bundle argumentos = new Bundle();
argumentos.putSerializable("core", this.core); // <- The problem
intent.putExtras(argumentos);

startActivity(intent);

结果:

at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.io.NotSerializableException: com.example.splash.SplashActivity
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)

3 个答案:

答案 0 :(得分:0)

要使用意图在两个活动之间传递数据(对象),您必须使用Serializable或Parcellable(推荐)实现Core类。否则,您可以将数据保存在应用程序类(扩展应用程序的类)中,然后您可以在需要时使用它。

答案 1 :(得分:0)

除非你真的需要这样做,否则我不建议这样做,但解决问题的一种方法是实现一个Application类,它将与应用程序具有相同的生命周期,然后临时存储数据为在那里沟通。

然后,第二个活动可以从Application类中检索它。

同样,这是一个丑陋的黑客,不应该轻易进行。 我个人试图从我继承的代码库中删除此行为。

答案 2 :(得分:0)

您可以从这里获得参考资料。希望它会对你有所帮助。可以使用序列化或可分割的

发送数据

Passing data through intent using Serializable

creating parcelable in android from some of the fields of a class