Kotlin中,用Parcelable传值的问题

  kotlin中,两个页面进行跳转,用parcelable值传递,常常会遇到传递过程中值获取不到的问题。存在此问题的原因,可能包括以下几点:

 

1.服务器传值为空或者为空对象;

2.定义在kotlin中的对象所包含的字段没有进行判空处理;

3.parcelable在传递多属性对象时,传值失效问题(可能是parcelable的一个坑);

那怎么解决呢:

 

1.用@Parcelize注解的形式,对parcelable值进行转化;

2.对结构对象,进行可null处理,防止服务器返回值不规范,造成值获取不到的问题.

 

当然如果一个对象中,包含列表数据的情况:

比如

class subApplyBean():Parcelable{

    var agentName:String?=null  

    var id:Int?=null

    ......

    var customList: ArrayList<CustomBean>? = null

}

这个时候需要对customList进行手动转化,因为Kotlin现在只支持对常规属性字段的自动转化;

 

Step1:在constructor中 list进行如下添加

constructor(parcel:Parcel):this(){

   ......

   customList=parcel.readArraylist(........)   as ArrayList<CustomBean>?

}

 

Step2:在SubApplyBean.write(parcel:Parcel,flags:Int)方法中,加入

SubApplyBean.write(parcel:Parcel,flags:Int){

     ......

     parcel.writeList(customList)

}

 

好了,大功告成!!  到这里,以上操作在kotlin中,基本上能解决用parcelable传值失效的问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章