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.
Asked
Active
Viewed 244 times
1

Abhijeet Ohol
- 13
- 2
-
Able to retrive object by `private val args: JarContributionsFragmentArgs by navArgs() var jar = args.jar'` – Abhijeet Ohol Jan 18 '23 at 07:42