Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.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
Java 比如将一个完整的不可序列化类从一个活动传递到另一个活动?_Java_Android_Android Activity_Serialization - Fatal编程技术网

Java 比如将一个完整的不可序列化类从一个活动传递到另一个活动?

Java 比如将一个完整的不可序列化类从一个活动传递到另一个活动?,java,android,android-activity,serialization,Java,Android,Android Activity,Serialization,我有一个名为“Core”的类,其中包含许多类,如“路径”、“会话”等。我在活动1中,当传递活动2时,我是否重新加载所有核心数据?(有很多),我需要通过intent.putExtras(Bundle)逐个传递各种数据?有没有办法通过“核心”课程?我试图做到“core”是可序列化的,但编译器告诉我不可能转换可序列化的类。每当改变活动时,我必须向“核心”课程收费?不做这个慢得多的导航吗?大多数核心数据都是从互联网上获得的,还有许多其他非常缓慢的数学计算,我认为我可以在活动1中做出独特的外观,并且在所有

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


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

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

然后,第二个活动可以从应用程序类中检索它

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

您可以从这里获得引用。希望这对您有所帮助。可以使用序列化或包裹发送数据


好主意,甚至想过通过伴随所有活动的服务进行沟通,但如你所说,除非绝对必要,否则尽量不要这样做(我希望不会)问题是核心类有其他类,我知道serializable和parcellable只能用于具有平面数据(如字符串、int等)的类,而不能用于对象,这就是为什么当我尝试从parcellable.parcellable serializable实现时,android studio给了我这个例外,因为我的类得到subclASSE和这些实现不支持它。我试图使用静态变量aver,因为我发现它。我认为官方没有解决方案,其他开发人员也没有解决方案?将只使用带有平面数据的可序列化类?在android中,主要类不与许多子类一起用作框架?当你说你的核心类c时包含许多类,你的意思是它包含其他类的对象。对吗???是的,例如:类会话、类路径、类配置、类路径等,在核心中使用变量:this.session=new session()等,例如来自活动的调用:this.core.session.login(user,pass);if(this.core.session.errors.has()){…错误是List类的类错误。当您在类上实现serializable时,该类中的所有对象也应实现serializable。在您的情况下,核心类应实现serializable,如果它包含类会话的对象,则会话类也应实现serializable等等。
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)