1

In a fragment,

   override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
        var args = arguments
        args?.getParcelable<Jar>("jar").let {
            viewModel.setJar(it as Jar)
        }
        setObservers()
   }

Above code is working fine but,

args?.getParcelable<Jar>("jar").let {
          viewModel.setJar(it as Jar)
       }       

is deprecated. So I tried

args?.getParcelable("jar", Jar::class.java).let {
    viewModel.setJar(it as Jar)
}

But its throwing error.

java.lang.NoSuchMethodError: No virtual method getParcelable(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; in class Landroid/os/Bundle; or its super classes (declaration of 'android.os.Bundle' appears in /system/framework/framework.jar!classes2.dex)

Parcelable Object:

@Parcelize data class Jar(

@field:SerializedName("id")
val id: String? = null,

@field:SerializedName("name")
val name: String? = null,

@field:SerializedName("description")
val description: String? = null,

@field:SerializedName("imageUrl")
val imageUrl: String? = null,

) : Parcelable
nav_version = "2.5.3" 

dependencies {
 classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"

plugins { 
    id 'kotlin-parcelize'

Can someone help me, how to retrieve Parcelable objects correctly with latest way and correct way.

0 Answers0