C'est probablement populaire parce qu'Android Studio convertit le Java en button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} }), puis fournit un avis sur leur code généré que nous devrions le convertir en lambda.
Joe Lapp
6
Kotlin est sacrément peu intuitif.
Je
2
Pourquoi tout le monde publie la même réponse avec une légère différence? La réponse est simple view.setOnClickListener { ... }. On dirait que tout le monde est si désireux de gagner sa réputation.
Aziz
Réponses:
69
Supposons que vous ayez textView sur lequel cliquer
Il existe cinq façons d'utiliser SetOnClickListener:
Première:
button.setOnClickListener {// Do some work here}
Seconde:
button.setOnClickListener(object:View.OnClickListener{overridefun onClick(view:View?){// Do some work here}})
Troisième:
button.setOnClickListener(View.OnClickListener{ view ->// Do some work here})
Quatrièmement:
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}}}}
Cinquième:
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}}}}
Il lance nullPointerException dans mon cas. Pouvez-vous m'aider
MashukKhan
vérifiez vos identifiants de vue, assurez-vous qu'ils existent dans un fichier xml.
Luvnish Monga
Ils existent en xml
MashukKhan
Partager votre source inclut XML.
Luvnish Monga
6
Vous devez d'abord obtenir la référence à la vue (par exemple Button, TextView, etc.) et définir un OnClickListener sur la référence à l'aide de la méthode 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()}
Reportez-vous à l' exemple Kotlin SetOnClickListener pour un exemple complet de Kotlin Android où un bouton est présent dans une activité et OnclickListener est appliqué au bouton. Lorsque vous cliquez sur le bouton, le code à l'intérieur du bloc SetOnClickListener est exécuté.
Mettre à jour
Vous pouvez maintenant référencer le bouton directement avec son identifiant en incluant l'instruction d'importation suivante dans le fichier de classe. Documentation .
Utilisez ce code pour ajouter onClickListenerdans Kotlin
val button :Button= getView()?.findViewById<Button>(R.id.testButton)asButton
button.setOnClickListener {view ->Toast.makeText(context,"Write your message here",Toast.LENGTH_LONG).show()}}
s'il vous plaît utiliser celui-ci très facile (définir l'id, cliquer sur l'auditeur et naviguer d'une classe vers une autre classe)
CHANDAN KUMAR
Bienvenue dans Stack Overflow! Veuillez ne pas simplement lancer votre code source ici. Soyez gentil et essayez de donner une belle description à votre réponse, afin que les autres l'aiment et la votent. Voir: Comment rédiger une bonne réponse?
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()}}}
Il existe plusieurs façons d'y parvenir, comme le montre la variété des réponses à cette question.
Pour affecter réellement l'auditeur à la vue, vous utilisez les mêmes méthodes que vous le feriez en Java:
button.setOnClickListener()
Cependant, Kotlin facilite l'attribution d'un lambda en tant qu'auditeur:
button.onSetClickListener {// Listener code}
Sinon, si vous souhaitez utiliser cet écouteur pour plusieurs vues, envisagez une expression lambda (un lambda affecté à une variable / valeur pour référence):
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*/} })
, puis fournit un avis sur leur code généré que nous devrions le convertir en lambda.view.setOnClickListener { ... }
. On dirait que tout le monde est si désireux de gagner sa réputation.Réponses:
Supposons que vous ayez textView sur lequel cliquer
la source
Utilisez le code ci-dessous
code clickListener .
la source
Voici un exemple d'utilisation de onClickListener dans Kotlin
la source
Méthode 1:
Méthode 2:
la source
Il existe cinq façons d'utiliser SetOnClickListener:
Première:
Seconde:
Troisième:
Quatrièmement:
Cinquième:
À votre santé!
la source
Pour utiliser plusieurs identifiants:
Créez une classe anonyme:
la source
Vous devez d'abord obtenir la référence à la vue (par exemple Button, TextView, etc.) et définir un OnClickListener sur la référence à l'aide de la méthode setOnClickListener ()
Reportez-vous à l' exemple Kotlin SetOnClickListener pour un exemple complet de Kotlin Android où un bouton est présent dans une activité et OnclickListener est appliqué au bouton. Lorsque vous cliquez sur le bouton, le code à l'intérieur du bloc SetOnClickListener est exécuté.
Mettre à jour
Vous pouvez maintenant référencer le bouton directement avec son identifiant en incluant l'instruction d'importation suivante dans le fichier de classe. Documentation .
puis pour le bouton
Reportez-vous au didacticiel Android Studio .
la source
Utilisez ce code pour ajouter
onClickListener
dans Kotlinla source
Vous pouvez simplement obtenir OnClickListener dans kotlin
la source
Je vois beaucoup de suggestions ici, mais cette collection manque les suivantes.
et dans la classe actuelle, nous avons une méthode comme celle-ci:
la source
var tv = findViewById(R.id.tv)
comme TextViewla source
la source
la source
Un moyen simple serait d'enregistrer un écouteur de clic et de créer un écouteur de clic avec une expression lambda.
Et implémentez
clickListener
:Vous pouvez remplacer
_
par un nom si vous avez besoin de la vue pour l'utiliser. Par exemple, vous devez vérifier l'ID de l'écouteur de clic.la source
Il existe plusieurs façons d'y parvenir, comme le montre la variété des réponses à cette question.
Pour affecter réellement l'auditeur à la vue, vous utilisez les mêmes méthodes que vous le feriez en Java:
Cependant, Kotlin facilite l'attribution d'un lambda en tant qu'auditeur:
Sinon, si vous souhaitez utiliser cet écouteur pour plusieurs vues, envisagez une expression lambda (un lambda affecté à une variable / valeur pour référence):
la source
Faites simplement comme ci-dessous:
button.setOnClickListener{doSomething()}
la source
la source
Vous utilisez comme ça onclickListener dans kotlin
la source
la source
Voici la solution. Votre code aimera ceci:
Pas besoin d'ajouter quoi que ce soit. comme ci-dessous:
la source
Commencez par trouver le bouton, pour empêcher la distribution de la,
View
vous pouvez utiliser le<>
comme suit:Une fois que vous avez une instance de
Button
, vous pouvez maintenant attacher l'écouteur de clic comme suit:la source
la source
Le moyen le plus simple que je connaisse pour y parvenir est d'utiliser les extensions Kotlin Android.
Sur votre application / build.gradle
apply plugin: 'kotlin-android-extensions'
Si votre bouton s'appelle 'btnAdd', alors sur votre fragment ou activité, importez les éléments suivants:
import kotlinx.android.synthetic.main.fragment_transactions.btnAdd
la source
Si vous voulez simuler l'ancienne méthode anonyme dans Kotlin, j'ai trouvé que cela fonctionnait parfaitement.
la source
Ajouter clickListener sur un bouton comme celui-ci
ajoutez ce code dans votre activité
la source
Vous pouvez utiliser setOnClickListener comme ceci dans Kotlin
la source