Слушатель onClick всегда имеет значение null в customView - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь создать простой customVeiw с двумя кнопками и одним textView. Мне нужно было нажать на 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

...