1. 程式人生 > >在三星(samsung)手機上使用Parcelable序列化傳遞資料的坑

在三星(samsung)手機上使用Parcelable序列化傳遞資料的坑

       Android中可以使用兩種方式來實現序列化:Serializable和Parcelable。至於它們的實現方式和優缺點對比今天就不說了。還是來解決文章標題中提到的問題吧。

現有類A

       public class A implements Parcelable{

....

}

現在我想在兩個Activity之間傳遞A型別的物件資料。發現一個奇怪的問題:唯獨在三星手機上會丟擲 class not found when unmarshalling的異常,其他機型以及模擬器都沒有問題。下面是我最初丟擲異常的程式碼:

fun start(context: Context, ordersBean: OTCOrderListResult.OrdersBean?) {

    val 
intent = Intent(context, OrderDetailAct::class.java) intent.putExtra("order", ordersBean) context.startActivity(intent) }

奇了怪了,為什麼會在這樣,比較納悶。我還一直檢查我的Parcelable方式的實現是不是有問題。最終無意間改成這樣的方式就可以了:

fun start(context: Context, ordersBean: OTCOrderListResult.OrdersBean?) {

    val intent = Intent(context, 
OrderDetailAct::class.java) val bundle = Bundle() bundle.putParcelable("order", ordersBean) intent.putExtra("bundle", bundle) context.startActivity(intent) }
反正目前我是不能解釋的,翻了原始碼之後也無法解釋。先把解決方式貼出來把,等哪天知道了再貼出來。