在空对象引用上,'boolean java.lang.Class.isInterface()'

4
我在Android 13上遇到了以下代码的崩溃。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Class.isInterface()' on a null object reference

代码:

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

DataClass(标签)如下所示:
@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
1个回答

5

我已找到解决方案,通过使用针对Android-13推荐的方法BundleCompat

val temp = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) 
    BundleCompat.getParcelable(bundle, ARG_TAG, Tab::class.java)
else 
    bundle.getParcelable(ARG_TAG)

活动意图怎么样?这个问题似乎严重困扰着Android 13,以至于只在发布版本中才显示出来。 - undefined
你可以更新意图的内容。 - undefined
检查已经在内部完成。BuildCompat.isAtLeastU() - undefined
感谢分享,这个方法已经被弃用,并且被标记为“Android UpsideDownCase是一个最终版本,这个方法不再需要。它将在未来的库版本中被移除。取而代之,请使用Build.VERSION.SDK_INT >= 34。” - undefined
谢谢。我遇到了同样的问题,你的解决方案也帮我解决了。我做了将近30年的专业开发工作,从来没有遇到过像Android这样棘手的平台。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接