cuốn sách gpt4 ai đã làm

java - intent 不能放入 XMPPTCPConnection 类型的额外对象

In lại Tác giả: Walker 123 更新时间:2023-11-29 03:00:13 26 4
mua khóa gpt4 Nike

我读了这篇有趣的帖子 How to pass an object from one activity to another on Android并发现我应该使用 putExtra 将对象发送到其他 Activity 并使用 getIntent() 接收对象。getSerializableExtra("name") 是必要的。但是当我使用 putExtra 时,它迫使我将 XMPPTCPConection 对象转换为 (java.io.Serializable)。

java安卓代码:

  XMPPTCPConnection connection;
connection= xmppConnectio.getXMPPConnectio();
if(connection.equals(null))
Log.d("","is null");
khác
Log.d("","is not null");

Intent intent= new Intent(this,chat.class);
intent.putExtra("connection", (java.io.Serializable) connection);
startActivity(intent);

但它抛出异常

02-21 05:00:44.733 4672-4683/passargad.ehsan D/connected﹕ yes connected successfully :
02-21 05:00:44.733 4672-4672/passargad.ehsan D/﹕ is not null
02-21 05:00:44.733 4672-4672/passargad.ehsan D/AndroidRuntime﹕ Shutting down VM
02-21 05:00:44.733 4672-4672/passargad.ehsan W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x400205a0)
02-21 05:00:44.743 4672-4672/passargad.ehsan E/AndroidRuntime﹕ FATAL EXCEPTION: main
**java.lang.ClassCastException: org.jivesoftware.smack.tcp.XMPPTCPConnection**
at passargad.ehsan.MainActivity.triger(MainActivity.java:189)
at passargad.ehsan.XMPPConnectio$connectionXMPP.onProgressUpdate(XMPPConnectio.java:125)
at passargad.ehsan.XMPPConnectio$connectionXMPP.onProgressUpdate(XMPPConnectio.java:55)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:432) at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)

故事中有趣的部分是可以正确执行 3 次。但后来它坏了。

Cảm ơn trước!

câu trả lời hay nhất

您必须转换为 Serializable 的事实应该已经告诉您问题所在。我查找了 XMPPTCPConnection 的 JavaDoc,实际上,它没有实现 Serializable.

当您尝试转换为 Serializable 时,您的应用程序快死了,因为该类未实现它。您引用的帖子提到“让自定义类实现 Serializable”,因为它是自定义类,开发人员可以进行更改。对于库类,您没有该选项。


您需要想出一个管理连接的策略,可能需要某种静态引用(查看使用 WeakReference 来避免泄漏连接)。您还必须处理重新创建 Activity 时的情况(即设备旋转),并且如果/当您丢失对它的引用时能够重新建立连接。

我很好奇管理这样的连接的最佳解决方案是什么。我没有直接经验,但也许您可以仔细阅读 GitHub 上的一些 Smack 实现,看看其他开发人员是如何处理这个问题的。

关于java - intent 不能放入 XMPPTCPConnection 类型的额外对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35531469/

26 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress