9赞
786
当前位置:  开发笔记 > 编程语言 > 正文

指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数convertView

如何解决《指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数convertView》经验,为你挑选了2个好方法。

将适配器代码转换为Kotlin之后,我得到了此错误:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView
    at ...MyAdapter.getView(Unknown Source:35)
    at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)
    at android.widget.AbsListView.obtainView(AbsListView.java:2366)

扩大行时会引发错误:

class LegalAdapter internal constructor(private val activity: Activity, private val list: ArrayList) : BaseAdapter() {

    override fun getView(position: Int, convertView: View, parent: ViewGroup): View {

    val layoutInflater = activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater

    @SuppressLint("ViewHolder")
    val row = layoutInflater.inflate(R.layout.legal_list_item, parent, false) //exception is throw here

显然,某些不应该为null的参数为null,然后kotlin对其进行检查。问题是我什至无法调试新的kotlin代码。



1> Ben P...:

getView()方法是Adapter接口的一部分,并且用Java定义。文档在这里。重要的部分是关于convertView参数的注释:

视图:如有可能,可重用的旧视图。注意:使用前,您应检查此视图是否为非null并具有适当的类型。

这意味着该框架将null值传递convertView给此方法是非常有效的(意味着您需要创建一个新视图并将其返回,而不是回收旧视图)。

反过来,这意味着Kotlin的定义convertView必须为type View?,而不仅仅是View。因此,将函数签名更改为:

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View


该工具自动生成的签名。但是,确实如此。此外,它还解决了调试器的问题。现在,它再次在方法内部的断点处停止。

2> TheWanderer..:

使convertView可为空:

convertView: View?

我不确定行号为什么错误,但是stacktrace会告诉您在错误消息中查找的位置。

推荐阅读
devbox
哪来的咸鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4