在三星(samsung)手機上使用Parcelable序列化傳遞資料的坑
阿新 • • 發佈:2019-02-02
Android中可以使用兩種方式來實現序列化:Serializable和Parcelable。至於它們的實現方式和優缺點對比今天就不說了。還是來解決文章標題中提到的問題吧。
現有類A
public class A implements Parcelable{
....
}
現在我想在兩個Activity之間傳遞A型別的物件資料。發現一個奇怪的問題:唯獨在三星手機上會丟擲 class not found when unmarshalling的異常,其他機型以及模擬器都沒有問題。下面是我最初丟擲異常的程式碼:
fun start(context: Context, ordersBean: OTCOrderListResult.OrdersBean?) { valintent = 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) }