2013-12-10 44 views
0

我試圖使用序列化到使用下面的代碼從一個活動傳遞一個對象到另一個:如何在使用intent傳遞它之後在Android中反序列化我的對象?

final Event rowItem = (Event) getItem(position); 
Intent intent = new Intent(context, DetailsActivity.class); 
intent.putExtra("event", rowItem); 
context.startActivity(intent); 

這工作正常(沒有錯誤),那麼在另一端我要再次使用反序列化:

Intent intent = getIntent(); 
Event event = (Event) intent.getSerializableExtra("event"); 

不幸的是,這將導致一個錯誤說:

java.lang.ClassCastException: java.lang.String cannot be cast to com.mycomp.model.Event 

這是我第一次使用序列化來傳遞一個O所以我可能會做一些非常愚蠢的事情。但我不知道是什麼。

有人知道我在這裏可能會做錯嗎?我會很高興,如果需要更多的共享代碼..

[編輯] 原來我沒有使用@SerializedName(value = "the_serialized_name")每個參數,但我沒有與類名使用implements Serializable。非常愚蠢的我。但謝謝你的回答!

+0

分享更多的代碼設計的,但你在should't Android的使用序列化。相反,使用Parcelable,看看文檔和一些代碼示例,它非常簡單。 – Sun

+0

你的類'Event'實現了'Serializable'嗎? –

回答

1

顯然你叫

(Event) intent.getSerializableExtra("event"); 

時,所以你可以嘗試打印此行,看看什麼是返回值獲得一個字符串,而不是一個序列化。這可能會幫助你找出問題所在。

此外,你應該看看在Parcelable類,它是一種可序列化的只是與我們的Android

相關問題