Попытка передать параметр функции в Kotlin - PullRequest
0 голосов
/ 14 января 2020

У меня есть функция:

fun test(){
    Timber.d("Button Clicked")
}

И я пытаюсь передать эту функцию фрагменту. Вот это поле внутри моего фрагмента.

class MyFragment(val layout: Int) : Fragment() {
     var clickEvent1: (() -> Unit)? = null
}

И вот как я устанавливаю это поле перед началом транзакции фрагмента.

fragment.clickEvent1 = {test()}

Моя цель - запустить эту функцию на моем нажмите кнопку внутри моего фрагмента.

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
     dialog_option_1.setOnClickListener { clickEvent1 }
}

Есть проблема с тем, как я это делаю, потому что функция "test" не запускается. Может ли кто-нибудь указать мне правильное направление? Спасибо

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Должно быть

dialog_option_1.setOnClickListener { clickEvent1() }

, если вы хотите сделать это так.

0 голосов
/ 14 января 2020

Использовать

dialog_option_1.setOnClickListener(clickEvent1)

Вам нужно передать саму лямбду в метод, поэтому вы должны использовать скобки () вместо {}, которые создают новую лямбду, которая в вашем случае почти ничего не делает.

...