Es ist wahrscheinlich beliebt, weil Android Studio Java in Java konvertiert button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} })und dann einen Hinweis zu dem generierten Code gibt, den wir in ein Lambda konvertieren sollten.
Joe Lapp
6
Kotlin ist verdammt unintuitiv. Keine Ahnung, warum Google so viel investiert
Codezombie
2
Warum posten alle die gleiche Antwort mit einem kleinen Unterschied? Die Antwort ist einfach view.setOnClickListener { ... }. Es scheint, als ob jeder so eifrig ist, sich einen guten Ruf zu verdienen.
Es gibt fünf Möglichkeiten, SetOnClickListener zu verwenden:
Zuerst:
button.setOnClickListener {// Do some work here}
Zweite:
button.setOnClickListener(object:View.OnClickListener{overridefun onClick(view:View?){// Do some work here}})
Dritte:
button.setOnClickListener(View.OnClickListener{ view ->// Do some work here})
Viertens:
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}}}}
Fünfte:
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}}}}
In meinem Fall wird nullPointerException ausgelöst. Können Sie mir helfen
MashukKhan
Überprüfen Sie Ihre Ansichts-IDs und stellen Sie sicher, dass sie in einer XML-Datei vorhanden sind.
Luvnish Monga
Sie existieren in xml
MashukKhan
Teilen Sie Ihre Quelle enthält XML.
Luvnish Monga
6
Zuerst müssen Sie den Verweis auf die Ansicht abrufen (z. B. Button, TextView usw.) und einen OnClickListener mit der Methode setOnClickListener () auf den Verweis setzen
// 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()}
Im Kotlin SetOnClickListener-Beispiel finden Sie ein vollständiges Kotlin-Android-Beispiel, in dem eine Schaltfläche in einer Aktivität vorhanden ist und OnclickListener auf die Schaltfläche angewendet wird. Wenn Sie auf die Schaltfläche klicken, wird der Code im SetOnClickListener-Block ausgeführt.
Aktualisieren
Jetzt können Sie die Schaltfläche direkt mit ihrer ID referenzieren, indem Sie die folgende Importanweisung in die Klassendatei aufnehmen. Dokumentation .
Verwenden Sie diesen Code, um onClickListenerKotlin hinzuzufügen
val button :Button= getView()?.findViewById<Button>(R.id.testButton)asButton
button.setOnClickListener {view ->Toast.makeText(context,"Write your message here",Toast.LENGTH_LONG).show()}}
Bitte verwenden Sie diese sehr einfach (ID festlegen, Listener klicken und eine Klasse zu einer anderen Klasse navigieren)
CHANDAN KUMAR
Willkommen bei Stack Overflow! Bitte werfen Sie nicht nur Ihren Quellcode hierher. Sei nett und versuche, deiner Antwort eine nette Beschreibung zu geben, damit andere sie mögen und sie positiv bewerten. Siehe: Wie schreibe ich eine gute Antwort?
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()}}}
privateval clickListener:View.OnClickListener=View.OnClickListener{_->// do something here}
Sie können durch _einen Namen ersetzen, wenn Sie die Ansicht benötigen, um ihn zu verwenden. Beispielsweise müssen Sie die ID des Klick-Listeners überprüfen.
privateval clickListener:View.OnClickListener=View.OnClickListener{ view ->if(view.id == login.id){// do something here}}
Es gibt verschiedene Möglichkeiten, dies zu erreichen, wie die verschiedenen Antworten auf diese Frage zeigen.
Um den Listener tatsächlich der Ansicht zuzuweisen, verwenden Sie dieselben Methoden wie in Java:
button.setOnClickListener()
Kotlin macht es jedoch einfach, ein Lambda als Zuhörer zuzuweisen:
button.onSetClickListener {// Listener code}
Wenn Sie diesen Listener für mehrere Ansichten verwenden möchten, können Sie alternativ einen Lambda-Ausdruck in Betracht ziehen (ein Lambda, das einer Variablen / einem Wert als Referenz zugewiesen ist):
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*/} })
und dann einen Hinweis zu dem generierten Code gibt, den wir in ein Lambda konvertieren sollten.view.setOnClickListener { ... }
. Es scheint, als ob jeder so eifrig ist, sich einen guten Ruf zu verdienen.Antworten:
Angenommen, Sie müssen auf textView klicken
quelle
Verwenden Sie den folgenden Code
clickListener- Code.
quelle
Hier ist ein Beispiel für die Verwendung des onClickListener in Kotlin
quelle
Methode 1:
Methode 2:
quelle
Es gibt fünf Möglichkeiten, SetOnClickListener zu verwenden:
Zuerst:
Zweite:
Dritte:
Viertens:
Fünfte:
Prost!
quelle
Für die Verwendung mehrerer IDs:
Anonyme Klasse erstellen:
quelle
Zuerst müssen Sie den Verweis auf die Ansicht abrufen (z. B. Button, TextView usw.) und einen OnClickListener mit der Methode setOnClickListener () auf den Verweis setzen
Im Kotlin SetOnClickListener-Beispiel finden Sie ein vollständiges Kotlin-Android-Beispiel, in dem eine Schaltfläche in einer Aktivität vorhanden ist und OnclickListener auf die Schaltfläche angewendet wird. Wenn Sie auf die Schaltfläche klicken, wird der Code im SetOnClickListener-Block ausgeführt.
Aktualisieren
Jetzt können Sie die Schaltfläche direkt mit ihrer ID referenzieren, indem Sie die folgende Importanweisung in die Klassendatei aufnehmen. Dokumentation .
und dann für den Knopf
Siehe Android Studio Tutorial .
quelle
Verwenden Sie diesen Code, um
onClickListener
Kotlin hinzuzufügenquelle
Sie können OnClickListener einfach in Kotlin herunterladen
quelle
Ich sehe hier viele Vorschläge, aber dieser Sammlung fehlt Folgendes.
und in der aktuellen Klasse haben wir eine Methode wie diese:
quelle
var tv = findViewById(R.id.tv)
als TextViewquelle
quelle
quelle
Eine einfache Möglichkeit wäre, einen Klick-Listener zu registrieren und einen Klick-Listener mit einem Lambda-Ausdruck zu erstellen.
Und implementieren Sie die
clickListener
:Sie können durch
_
einen Namen ersetzen, wenn Sie die Ansicht benötigen, um ihn zu verwenden. Beispielsweise müssen Sie die ID des Klick-Listeners überprüfen.quelle
Es gibt verschiedene Möglichkeiten, dies zu erreichen, wie die verschiedenen Antworten auf diese Frage zeigen.
Um den Listener tatsächlich der Ansicht zuzuweisen, verwenden Sie dieselben Methoden wie in Java:
Kotlin macht es jedoch einfach, ein Lambda als Zuhörer zuzuweisen:
Wenn Sie diesen Listener für mehrere Ansichten verwenden möchten, können Sie alternativ einen Lambda-Ausdruck in Betracht ziehen (ein Lambda, das einer Variablen / einem Wert als Referenz zugewiesen ist):
quelle
Gehen Sie einfach wie folgt vor:
button.setOnClickListener{doSomething()}
quelle
quelle
Sie verwenden so onclickListener in kotlin
quelle
quelle
Hier ist die Lösung. Ihr Code wird dies mögen:
Sie müssen nichts hinzufügen. Wie unten:
quelle
Suchen Sie zuerst die Schaltfläche, um die Besetzung zu verhindern.
View
Sie können<>
Folgendes verwenden:Sobald Sie eine Instanz von haben
Button
, können Sie den Klick-Listener wie folgt anhängen:quelle
quelle
Der einfachste Weg, den ich kenne, um dies zu erreichen, sind Kotlin Android Extensions.
Auf Ihrer App / build.gradle
apply plugin: 'kotlin-android-extensions'
Wenn Ihre Schaltfläche 'btnAdd' heißt, importieren Sie auf Ihrem Fragment oder Ihrer Aktivität Folgendes:
import kotlinx.android.synthetic.main.fragment_transactions.btnAdd
quelle
Wenn Sie den alten anonymen Weg in Kotlin simulieren möchten, fand ich, dass dies perfekt funktioniert hat.
quelle
Fügen Sie die ClickListener-Schaltfläche wie folgt hinzu
Fügen Sie diesen Code in Ihre Aktivität ein
quelle
Sie können setOnClickListener wie folgt in Kotlin verwenden
quelle