变量声明为var,但编译器称它为val

时间:2017-06-28 10:41:46

标签: android kotlin anko

编译器给我错误

  

错误:(97,17)Val无法重新分配

但变量声明为var

修改:您可以在我的代码中看到评论。当我指定 rcv = recyclerView
时   chkStrictSearch = checkBox 我在此处显示红色下划线,上面显示错误消息工具提示

以下是我的代码:

private var rcv: RecyclerView? = null
private var chkStrictSearch: android.widget.CheckBox? = null  

private fun getMainView(): View{
    return with(context){
        frameLayout{
            lparams(width = matchParent, height = matchParent)
            //Error is below - val cannot be reassign
            rcv = recyclerView{
                lparams(width = matchParent, height = matchParent)
                setPadding(0, resources.getDimension(R.dimen.toolbar_height).toInt(), 0, dip(48))
                clipToPadding = false
            }
           //and here - val cannot be reassign
            chkStrictSearch = checkBox{
                text = "Strict Search"
            }.lparams(width = wrapContent, height = wrapContent){
                marginEnd = dip(24)
                bottomMargin = dip(50)
                gravity = Gravity.BOTTOM
            }
        }
    }
}  

1 个答案:

答案 0 :(得分:3)

似乎是静态代码分析中的错误,或者可能是由增量编译引起的。尝试重建/清理项目。

或试试这个:

private fun getMainView(): View {
    return with(context) {
        frameLayout {
           rcv = null
        }
    }
}

如果编译现在有效,请添加原始代码并重新编译。