在customView中,onClick侦听器始终为null

时间:2019-05-09 18:20:54

标签: android kotlin android-custom-view

我试图用两个按钮和一个textView创建一个简单的customVeiw。我需要单击textView为每个customView做一些不同的动作。 这是我的customView代码的一部分

class myCustomview{
//...
//...
    interface ButtonClickListener
    {
        fun onCityButtonClick(v: View)
    }

    private lateinit var buttonClickListener: ButtonClickListener

    fun setButtonClickListener(listener: ButtonClickListener)
    {
        this.buttonClickListener = listener
    }
//...
//...
    override fun onClick(v: View?)
    {
        when(v?.id)
        {
            btn.id->
            {
                fun2()
            }
            btn.id->
            {
                fun1()
            }
            textView.id->
            {
                if (buttonClickListener != null)
                {
                    buttonClickListener.onCityButtonClick(textValue)
                }
            }
        }
    }

并用于片段:

 class myFragment  :  Fragment(), CustomValueSelector.ButtonClickListener
{
//...
override fun onViewCreated(view: View, savedInstanceState: Bundle?)
    {
//...

idMyCustomView.setButtonClickListener( this)

}//onViewCreated

//...

override fun onCityButtonClick(v: View)
    {
        Toast.makeText(context," always null",Toast.LENGTH_SHORT).show()
    }
//...
}//end class

为什么这种情况总是成立? (buttonClickListener!= null) 并且条件侦听器在此函数中始终为空

fun setButtonClickListener(listener: ButtonClickListener)
    {
        this.buttonClickListener = listener
    }

,并且当运行应用程序并单击textView应用程序时,该错误已停止,并出现KotlinNullPointerException

0 个答案:

没有答案