【发布时间】:2016-02-21 02:05:16
【问题描述】:
我阅读了这篇有趣的帖子How to pass an object from one activity to another on Android,发现我应该使用 putExtra 将对象发送到其他活动,并使用 getIntent().getSerializableExtra("name") 来接收它是必要的。但是当我使用 putExtra 时,它会强制我将 XMPPTCPConection 对象强制转换为 (java.io.Serializable)。
java android 代码:
XMPPTCPConnection connection;
connection= xmppConnectio.getXMPPConnectio();
if(connection.equals(null))
Log.d("","is null");
else
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 次。但后来它坏了。
提前致谢!
【问题讨论】: