空对象引用上的“boolean java.lang.Class.isInterface()”

Soh*_*med 10 android nullpointerexception parcelable kotlin android-13

我在 Android 13 上遇到此崩溃,代码如下。

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Class.isInterface()' on a null object reference
Run Code Online (Sandbox Code Playgroud)

代码:

val temp = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) 
    bundle.getParcelable(ARG_TAG, Tab::class.java)
else 
    bundle.getParcelable(ARG_TAG)
Run Code Online (Sandbox Code Playgroud)

DataClass(Tab)如下:

@Keep
@Parcelize
data class Tab(
    val data: List<String>? = null,
    val icon: String? = null,
    val provider: String? = null,
    val subtype: String? = null,
    val title: String,
    val items: Int = 0
) : Parcelable
Run Code Online (Sandbox Code Playgroud)

Soh*_*med 9

我找到了解决方案,使用 Android-13 的推荐方法BundleCompat

val temp = BundleCompat.getParcelable(bundle, ARG_TAG, Tab::class.java)
Run Code Online (Sandbox Code Playgroud)