I am creating a framgent using Parcelable.
In most cases there is nothing wrong,
but in the firebase Crashlytics report I get an Unmarshalling unknown type code Exception.
I am not sure why I am getting that error.
Below is my code.
dataClass
class MovieNew(
val Url: String,
val movieDetail : ArrayList<MovieDetail>,
val imageSrc : String,
val brandImageSrc : String,
) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
arrayListOf<MovieDetail>().apply {
parcel.readList(this, MovieDetail::class.java.classLoader)
},
parcel.readString(),
parcel.readString()) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(Url)
parcel.writeList(movieDetail)
parcel.writeString(imageSrc)
parcel.writeString(brandImageSrc)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<MovieNew> {
override fun createFromParcel(parcel: Parcel): MovieNew {
return MovieNew(parcel)
}
override fun newArray(size: Int): Array<MovieNew?> {
return arrayOfNulls(size)
}
}
}
Adapter
class ContentsNewListFragmentAdapter(fm: androidx.fragment.app.FragmentManager, var movieList: ArrayList<MovieNew>, var brandList : ArrayList<BrandList>) : androidx.fragment.app.FragmentStatePagerAdapter(fm) {
private var listener: MainActivityListener? = null
override fun getItem(position: Int): androidx.fragment.app.Fragment {
val tabPosition : Int = Utils.setBrandNum(brandList ,movieList[position].brandId.toInt())
val fragment = ContentsNewListFragment.newInstance(movieList[position],tabPosition)
fragment.setMainListener(listener)
return fragment
}
fragment
class ContentsNewListFragment : androidx.fragment.app.Fragment() {
private var model: MovieNew? = null
private var tabPostion : Int? = null
private var listener: MainActivityListener? = null
companion object {
fun newInstance(model : MovieNew, tabPostion : Int): ContentsNewListFragment {
val args = Bundle()
val fragment = ContentsNewListFragment()
if (model != null){
args.putParcelable("model", model)
args.putInt("tabPosition", tabPostion)
fragment.arguments = args
}
return fragment
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (arguments != null) {
model = arguments?.getParcelable("model")
tabPostion = arguments?.getInt("tabPosition")
}
}
Let me know if you know the solution.