btn.setOnClickListener () как он вызывает - PullRequest
0 голосов
/ 04 января 2019

Я новичок в программировании и знаю, как работает функция btn.setOnClickListener {} (фигурные скобки).Но есть и другая функция btn.setOnClickListener () - скобки не фигурные.Я не знаю, как и когда я должен использовать этот тип функций.Как работает такой тип вызовов функций?Я хотел бы узнать больше об этом, но я не знаю, как Google это Ответ: «Если функция имеет только один параметр, и это функция, скобки могут быть удалены»

Ответы [ 4 ]

0 голосов
/ 07 февраля 2019

setOnClickListener (Interface i)

 This is Method of View Class in Android.
1. setOnClickListener is method of that class which except only interface as a parameter.

2. or else you have to implement that interface in your class like given example.

Go through Anonymous Class implement process.

the thing is that.  either you pass interface object or you have to implement onClick method  interface OnClickListener.




1. When you want to implement in class  use this

    btnView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });


2. Pass interface object of onClickListener

        appView.setOnClickListener();  ;----> pass interface object
0 голосов
/ 04 января 2019

Оба типа эквивалентны:

button.setOnClickListener {
    // ......................
}

button.setOnClickListener(View.OnClickListener {
    // ......................
})

, но 1-й тип предпочтительнее.Даже если вы напишите второй, если навести курсор мыши на View.OnClickListener, Android Studio отобразит это сообщение:

Резервный SAM-конструктор

, и если вы нажмете Alt-Enter, вам будет предложено:

Удалите лишний конструктор SAM

и, если вы щелкните по нему, View.OnClickListener будет удален.Снова, нажав Alt-Enter, вам будет предложено:

Убрать лямбда-аргумент из скобок

, и если вы нажмете на него, вы получите 1-й тип.Так что не волнуйтесь об этом, используйте 1-й тип, и все будет в порядке.

0 голосов
/ 07 февраля 2019

Ответ: «Если функция имеет только один параметр, а эта функция, скобки могут быть удалены»

0 голосов
/ 04 января 2019

Согласно: https://antonioleiva.com/lambdas-kotlin-android/

Если функция имеет только один параметр, и это функция, скобки могут быть удалены

Вместо пустых скобок, мы можем лучше удалитьони:
view.setOnClickListener { v -> toast("Hello") }


Если последний параметр функции является функцией, он может выходить за скобки

Следовательно, мы можем извлечь слушателя следующим образом:
view.setOnClickListener() { v -> toast("Hello") }
Если бы у нас было больше параметров, остальные параметры были бы в скобках, даже если бы это были функции.Может быть извлечен только последний параметр.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...