美文网首页
Parameter specified as non-null

Parameter specified as non-null

作者: CZKGO | 来源:发表于2020-01-09 21:59 被阅读0次

    问题

    java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView
            at absolutely.kotlin.adapter.MyExpandAdapter.getGroupView(Unknown Source:2)
            at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:446)
            at android.widget.AbsListView.obtainView(AbsListView.java:2408)
            at android.widget.ListView.makeAndAddView(ListView.java:2126)
            at android.widget.ListView.fillDown(ListView.java:851)
            at android.widget.ListView.fillDown(ListView.java:833)
            at android.widget.ListView.fillFromTop(ListView.java:921)
            at android.widget.ListView.layoutChildren(ListView.java:1872)
            at android.widget.AbsListView.onLayout(AbsListView.java:2207)
            at absolutely.kotlin.clean.base.view.ExpandListView.onLayout(ExpandListView.kt:87)
            ...
    

    原因

        Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull意为必不为空的参数为空了,一般发生将java代码转为Kotlin代码时,因为java中的参数可以传null,而装换过来的Kotlin代码使用是的非空类型,当该方法传入null值时,就会产生该错误,在这里是很明显是getGroupView的参数出了问题。

    解决

        我的MyExpandAdapter是继承自BaseExpandableListAdapter的适配器,转换后的Kotlin代码中的getGroupView有四个参数,如下:

    fun getGroupView(groupPosition: Int, isExpanded: Boolean ,
                convertView: View, parent: ViewGroup ):View {
        .....
        return convertView;
    }
    

        其中参数convertView,parent都可能为null,所以需要将其变为可空类型,即在其类型后加上?,如下:

    fun getGroupView(groupPosition: Int, isExpanded: Boolean ,
                convertView: View?, parent: ViewGroup? ):View {
        .....
        return convertView;
    }
    

        同理,该类中的getChildView方法需要相同处理

    相关文章

      网友评论

          本文标题:Parameter specified as non-null

          本文链接:https://www.haomeiwen.com/subject/uwyjactx.html