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) }反正目前我是不能解释的,翻了源码之后也无法解释。先把解决方式贴出来把,等哪天知道了再贴出来。
扫描二维码关注公众号,回复:
1141257 查看本文章