web-dev-qa-db-fra.com

Android - Comment atteindre setOnClickListener dans Kotlin?

Je voulais savoir comment nous définissions onClickListener de base dans Kotlin pour le développement Android.

43
Anirudh Agarwal

Supposons que vous ayez textView sur lequel cliquer

text_view.text = "Hello Kotlin";

text_view.setOnClickListener {
    val intent = Intent(this@MainActivity, SecondActivity::class.Java)
    intent.putExtra("key", "Kotlin")
    startActivity(intent)
}
37

Utilisez le code ci-dessous

val textview = findViewById<TextView>(R.id.textview)
textview.setOnClickListener(clickListener)

val button = findViewById<Button>(R.id.button)
button.setOnClickListener(clickListener)

clickListener code.

val clickListener = View.OnClickListener {view ->

    when (view.getId()) {
        R.id.textview -> firstFun()
        R.id.button -> secondFun()
    }
}
23
Akash Patel

Voici un exemple d'utilisation de l'outil onClickListener dans Kotlin

button1.setOnClickListener(object : View.OnClickListener{
            override fun onClick(v: View?) {
                //Your code here
            })
13
Alf Moh

Méthode 1:

txtNext.setOnClickListener {
        val intent = Intent(applicationContext, SecondActivity::class.Java)
        startActivity(intent)
    }

Méthode 2:

class FirstActivity : AppCompatActivity(), View.OnClickListener {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_first)
    txtNext.setOnClickListener(this)
}

override fun onClick(v: View) {
    when (v.id) {
        R.id.txtNext -> {
            val intent = Intent(applicationContext, SecondActivity::class.Java)
            startActivity(intent)
        }
        else -> {
            // else condition
        }
    }
  }
}
9
Ronak Thakkar

Pour utiliser plusieurs identifiants:

textview1.setOnClickListener(clickListener)
textview2.setOnClickListener(clickListener)

Créer une classe anonyme:

 private val clickListener: View.OnClickListener = View.OnClickListener { view ->
    when (view.id) {
        R.id.textview1-> { 
           Toast.makeText(this, "Clicked 1", Toast.LENGTH_SHORT).show()
        }
        R.id.textview2-> { 
           Toast.makeText(this, "Clicked 2", Toast.LENGTH_SHORT).show()
        }
    }
}
6
Luvnish Monga

Utilisez ce code pour ajouter onClickListener dans Kotlin

val button : Button = getView()?.findViewById<Button>(R.id.testButton) as Button
button.setOnClickListener {view ->
         Toast.makeText(context, "Write your message here", Toast.LENGTH_LONG).show()
    }
}
5
ambreesh kushwaha

Je vois beaucoup de suggestions ici, mais cette collection manque le suivant.

button.setOnClickListener(::onButtonClicked)

et dans la classe actuelle, nous avons une méthode comme celle-ci:

private fun onButtonClicked(view: View) {
     // do stuff
}
2
hadilq
   button.setOnClickListener {
          //write your code here
   }
2
Resmi Venugopal

Il existe plusieurs manières d'y parvenir, comme le montre la diversité des réponses à cette question.

Pour affecter réellement l'écouteur à la vue, vous utilisez les mêmes méthodes qu'en Java:

button.setOnClickListener()

Cependant, Kotlin facilite l'affectation d'un lambda en tant qu'auditeur:

button.onSetClickListener {
    // Listener code
}

Sinon, si vous souhaitez utiliser cet écouteur pour plusieurs vues, considérons 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)
2
RedBassett

Simplement vous pouvez obtenir OnClickListener dans Kotlin

view1.setOnClickListener{

//body 

}
2
Android Geek

Tout d'abord, vous devez 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 button
val btn_click_me = findViewById(R.id.btn_click_me) as Button
// set on-click listener
btn_click_me.setOnClickListener {
    Toast.makeText(this@MainActivity, "You clicked me.", Toast.LENGTH_SHORT).show()
}

Voir Kotlin SetOnClickListener, exemple pour obtenir un exemple complet de Kotlin Android, dans lequel un bouton est présent dans une activité et OnclickListener est appliqué au bouton. Lorsque vous cliquez sur le bouton, le code contenu dans le bloc SetOnClickListener est exécuté.

Mettre à jour

Vous pouvez maintenant référencer directement le bouton avec son identifiant en incluant l'instruction d'importation suivante dans le fichier de classe. Documentation .

import kotlinx.Android.synthetic.main.activity_main.*

puis pour le bouton

btn_click_me.setOnClickListener {
    // statements to run when button is clicked
}

Référez-vous Tutoriel Android Studio .

1
Mallikarjun M

Vous utilisez comme ça onclickListener dans kotlin

val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {  
...
}
1
SSALPHAX

Un moyen simple serait d'inscrire un écouteur de clic et de créer un écouteur de clic avec une expression lambda.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // click listener registered
    myButton.setOnClickListener(clickListener)
}

Et implémentez la clickListener:

private val clickListener: View.OnClickListener = View.OnClickListener { _ ->
    // do something here
}

Vous pouvez remplacer _ par un nom si vous avez besoin que la vue l’utilise. Par exemple, vous devez vérifier l'id de l'écouteur de clics.

private val clickListener: View.OnClickListener = View.OnClickListener { view ->
    if(view.id == login.id) {
        // do something here
    }
}
1
Maihan Nijat
    val button = findViewById<Button>(R.id.button)
    button.setOnClickListener {
        val intent = 
    Intent(this@MainActivity,ThirdActivity::class.Java)
        intent.putExtra("key", "Kotlin")
        startActivity(intent)
    }
1
Vinay John
**i have use kotlin-extension so i can access directly by button id:**


btnSignIN.setOnClickListener {
            if (AppUtils.isNetworkAvailable(activity as BaseActivity)) {
                if (checkValidation()) {

                    hitApiLogin()
                }
            }
        }
1
abhilasha Yadav

Ajouter clickListener sur un bouton comme celui-ci

    btUpdate.setOnClickListener(onclickListener)

ajouter ce code dans votre activité

 val onclickListener: View.OnClickListener = View.OnClickListener { view ->
        when (view.id) {
            R.id.btUpdate -> updateData()


        }
    }
0
Jyot

Commencez par trouver le bouton. Pour éviter la conversion de la View, vous pouvez utiliser le <> comme suit:

val button = findViewById<Button>(R.id.button);

Une fois que vous avez une instance de la Button, vous pouvez maintenant attacher l’écouteur de clics comme suit:

button.setOnClickListener {  
 // You code here
}
0
Joseph

var tv = findViewById (R.id.tv) en tant que TextView

    tv.setOnClickListener {
       val i = Intent(this@MainActivity, SecondActivity::class.Java)
       startActivity(i)
       finish()
    }
0
CHANDAN KUMAR
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
}
0
Ajay Prajapati
findViewById<Button>(R.id.signUp)?.setOnClickListener(
    Toast.makeText(mActivity, "Button Clicked", Toast.LENGTH_LONG).show()
)
0
user3694157

Si vous voulez simuler l'ancienne méthode anonyme à Kotlin, j'ai trouvé que cela fonctionnait parfaitement.

 btnNewWay!!.setOnClickListener(object:View.OnClickListener {
    override fun onClick(v: View?) {
        //Your Code Here!
    }})
0
user2288580

Pour ce faire, le moyen le plus simple consiste à 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 ce qui suit:

import kotlinx.Android.synthetic.main.fragment_transactions.btnAdd

 override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    btnAdd.setOnClickListener {
        Toast.makeText(context , "Done", 10).show()
    }
}
0
isijara