Prawdopodobnie jest popularne, ponieważ Android Studio konwertuje Javę na, button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} })a następnie dostarcza porady na temat wygenerowanego przez nich kodu, że powinniśmy przekonwertować go na lambdę.
Joe Lapp
6
Kotlin jest cholernie nieintuicyjny. Nie mam pojęcia, dlaczego Google tak dużo w to
inwestuje
2
Dlaczego wszyscy publikują tę samą odpowiedź z niewielką różnicą? Odpowiedź jest prosta view.setOnClickListener { ... }. Wygląda na to, że wszyscy tak bardzo chcą zdobyć reputację.
wszyscy wyglądają blisko, "obiekt" nie jest oczywiście w nawiasach klamrowych. straciłem trochę czasu
M. Usman Khan
26
Istnieje pięć sposobów korzystania z SetOnClickListener:
Pierwszy:
button.setOnClickListener {// Do some work here}
Druga:
button.setOnClickListener(object:View.OnClickListener{overridefun onClick(view:View?){// Do some work here}})
Trzeci:
button.setOnClickListener(View.OnClickListener{ view ->// Do some work here})
Naprzód:
classMainActivity:AppCompatActivity(),View.OnClickListener{
lateinit var button :Buttonoverridefun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button = findViewById(R.id.button1)
button.setOnClickListener(this)}overridefun onClick(view:View?){when(view?.id){
R.id.button1->{// do some work here}}}}
Piąty:
classMainActivity:AppCompatActivity(){
lateinit var button :Buttonoverridefun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button = findViewById(R.id.button1)
button.setOnClickListener(listener)}val listener=View.OnClickListener{ view ->when(view.getId()){
R.id.button1->{// Do some work here}}}}
W moim przypadku rzuca nullPointerException. Czy możesz mi pomóc
MashukKhan
sprawdź identyfikatory widoku, upewnij się, że istnieją pliki xml.
Luvnish Monga
Istnieją w xml
MashukKhan,
Udostępnij swoje źródło zawiera XML.
Luvnish Monga
6
Najpierw musisz pobrać odwołanie do widoku (powiedzmy Button, TextView itp.) I ustawić OnClickListener na referencję za pomocą metody setOnClickListener ()
// get reference to buttonval btn_click_me = findViewById(R.id.btn_click_me)asButton// set on-click listener
btn_click_me.setOnClickListener {Toast.makeText(this@MainActivity,"You clicked me.",Toast.LENGTH_SHORT).show()}
Zapoznaj się z przykładem Kotlin SetOnClickListener, aby uzyskać pełny przykład Kotlin Android, w którym przycisk jest obecny w działaniu, a OnclickListener jest stosowany do przycisku. Po kliknięciu przycisku wykonywany jest kod wewnątrz bloku SetOnClickListener.
Aktualizacja
Teraz możesz odwołać się do przycisku bezpośrednio za pomocą jego identyfikatora, dołączając następującą instrukcję importu do pliku klasy. Dokumentacja .
val button :Button= getView()?.findViewById<Button>(R.id.testButton)asButton
button.setOnClickListener {view ->Toast.makeText(context,"Write your message here",Toast.LENGTH_LONG).show()}}
użyj tego bardzo prostego (ustaw identyfikator, słuchacz kliknięć i przejdź z jednej klasy do innej)
CHANDAN KUMAR
Witamy w Stack Overflow! Proszę nie wrzucaj tutaj swojego kodu źródłowego. Bądź miły i staraj się dobrze opisać swoją odpowiedź, aby inni ją polubili i pozytywnie ocenili. Zobacz: Jak napisać dobrą odpowiedź?
sɐunıɔ ןɐ qɐp
4
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {val intent =Intent(this@MainActivity,ThirdActivity::class.java)
intent.putExtra("key","Kotlin")
startActivity(intent)}
**i have use kotlin-extension so i can access directly by button id:**
btnSignIN.setOnClickListener {if(AppUtils.isNetworkAvailable(activity asBaseActivity)){if(checkValidation()){
hitApiLogin()}}}
Można to osiągnąć na kilka różnych sposobów, o czym świadczą różnorodne odpowiedzi na to pytanie.
Aby faktycznie przypisać odbiornik do widoku, użyj tych samych metod, co w Javie:
button.setOnClickListener()
Jednak Kotlin ułatwia przypisanie lambdy jako słuchacza:
button.onSetClickListener {// Listener code}
Alternatywnie, jeśli chcesz używać tego detektora do wielu widoków, rozważ wyrażenie lambda (lambda przypisane do zmiennej / wartości w celach informacyjnych):
val buttonClickListener =View.OnClickListener{ view ->// Listener code}
button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)
val saveButton:Button= findViewById(R.id.button_save)
saveButton.setOnClickListener{// write code for click event}
with view object
saveButton.setOnClickListener{
view ->// write code for click event}
button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} })
a następnie dostarcza porady na temat wygenerowanego przez nich kodu, że powinniśmy przekonwertować go na lambdę.view.setOnClickListener { ... }
. Wygląda na to, że wszyscy tak bardzo chcą zdobyć reputację.Odpowiedzi:
Załóżmy, że masz textView do kliknięcia
źródło
Użyj poniższego kodu
kod clickListener .
źródło
Oto przykład, jak używać onClickListener w Kotlinie
źródło
Istnieje pięć sposobów korzystania z SetOnClickListener:
Pierwszy:
Druga:
Trzeci:
Naprzód:
Piąty:
Twoje zdrowie!
źródło
Metoda 1:
Metoda 2:
źródło
Aby użyć wielu identyfikatorów:
Utwórz zajęcia anonimowe:
źródło
Najpierw musisz pobrać odwołanie do widoku (powiedzmy Button, TextView itp.) I ustawić OnClickListener na referencję za pomocą metody setOnClickListener ()
Zapoznaj się z przykładem Kotlin SetOnClickListener, aby uzyskać pełny przykład Kotlin Android, w którym przycisk jest obecny w działaniu, a OnclickListener jest stosowany do przycisku. Po kliknięciu przycisku wykonywany jest kod wewnątrz bloku SetOnClickListener.
Aktualizacja
Teraz możesz odwołać się do przycisku bezpośrednio za pomocą jego identyfikatora, dołączając następującą instrukcję importu do pliku klasy. Dokumentacja .
a następnie przycisk
Zapoznaj się z samouczkiem Android Studio .
źródło
Użyj tego kodu, aby dodać
onClickListener
Kotlinźródło
Po prostu możesz uzyskać OnClickListener w kotlin
źródło
Widzę tutaj wiele sugestii, ale w tej kolekcji brakuje następujących.
aw obecnej klasie mamy taką metodę:
źródło
var tv = findViewById(R.id.tv)
jako TextViewźródło
źródło
źródło
Prostym sposobem byłoby zarejestrowanie nasłuchiwania kliknięć i utworzenie nasłuchiwania kliknięć z wyrażeniem lambda.
I wdrożyć
clickListener
:Możesz zastąpić
_
nazwę, jeśli chcesz, aby widok jej używał. Na przykład musisz sprawdzić identyfikator odbiornika kliknięć.źródło
Można to osiągnąć na kilka różnych sposobów, o czym świadczą różnorodne odpowiedzi na to pytanie.
Aby faktycznie przypisać odbiornik do widoku, użyj tych samych metod, co w Javie:
Jednak Kotlin ułatwia przypisanie lambdy jako słuchacza:
Alternatywnie, jeśli chcesz używać tego detektora do wielu widoków, rozważ wyrażenie lambda (lambda przypisane do zmiennej / wartości w celach informacyjnych):
źródło
Po prostu wykonaj poniższe czynności:
button.setOnClickListener{doSomething()}
źródło
źródło
Używasz w ten sposób onclickListener w kotlin
źródło
źródło
Oto rozwiązanie. Twój kod będzie wyglądał tak:
Nie musisz niczego dodawać. jak poniżej:
źródło
Najpierw znajdź przycisk, aby zapobiec rzucaniu z niego
View
, możesz użyć w<>
następujący sposób:Gdy masz już instancję
Button
, możesz teraz dołączyć odbiornik kliknięć w następujący sposób:źródło
źródło
Najłatwiejszym sposobem, jaki znam, aby to osiągnąć, są rozszerzenia Kotlin dla Androida.
W twojej aplikacji / build.gradle
apply plugin: 'kotlin-android-extensions'
Jeśli twój przycisk nazywa się `` btnAdd '', to w swoim fragmencie lub działaniu zaimportuj następujące elementy:
import kotlinx.android.synthetic.main.fragment_transactions.btnAdd
źródło
Jeśli chcesz zasymulować stary anonimowy sposób w Kotlinie, okazało się, że działa to idealnie.
źródło
Dodaj funkcję clickListener do takiego przycisku
dodaj ten kod do swojej aktywności
źródło
Możesz użyć setOnClickListener w ten sposób w Kotlin
źródło