Android-Comment réaliser setOnClickListener à Kotlin?

je voulais savoir comment nous avons mis basic onClickListener à Kotlin pour le développement Android.

36
demandé sur Cœur 2017-06-01 10:34:30

20 réponses

supposons que vous ayez textView pour cliquer

text_view.text = "Hello Kotlin";

text_view.setOnClickListener {
    val intent = Intent(this@MainActivity, SecondActivity::class.java)
    intent.putExtra("key", "Kotlin")
    startActivity(intent)
}
30
répondu Vinod Pattanshetti 2017-06-01 07:44:00

utiliser 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()
    }
}
17
répondu Akash Patel 2017-06-01 07:44:19

voici un exemple d'utilisation de l'onClickListener à Kotlin

button1.setOnClickListener(object : View.OnClickListener{
            override fun onClick(v: View?) {
                //Your code here
            })
11
répondu Alf Moh 2018-09-12 16:04:32

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
        }
    }
  }
}
6
répondu Ronak Thakkar 2018-01-29 06:24:37

Pour l'utilisation de plusieurs id:

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
répondu Luvnish Monga 2018-05-11 12:36:22

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
répondu ambreesh kushwaha 2017-10-26 08:05:53

Vous utilisez comme ça onclickListener dans kotlin

val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {  
...
}
1
répondu SSALPHAX 2017-06-01 07:38:31

tout d'abord, vous devez obtenir la référence à la vue (bouton say, TextView, etc.) et définir un OnClickListener à la référence en utilisant 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()
}

Consulter Kotlin SetOnClickListener Exemple pour Kotlin complet Android exemple où un bouton est présent dans une activité et OnclickListener est appliqué sur le bouton. Lorsque vous cliquez sur le bouton, le code dans le bloc SetOnClickListener est exécuté.

1
répondu Mallikarjun M 2017-09-30 12:24:13

il existe plusieurs façons d'y parvenir, comme le montre la variété des réponses à cette question.

Pour attribuer l'auditeur à la vue, vous utilisez les mêmes méthodes que vous en Java:

button.setOnClickListener()

cependant, Kotlin rend facile d'assigner un lambda comme auditeur:

button.onSetClickListener {
    // Listener code
}

alternativement, si vous voulez utiliser cet auditeur pour des vues multiples, considérez une expression lambda (une lambda assignée à une variable/valeur pour de référence):

val buttonClickListener = View.OnClickListener { view ->
    // Listener code
}

button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)
1
répondu RedBassett 2017-12-30 00:44:26

Il suffit de faire comme ci-dessous:

button.setOnClickListener{doSomething()}

1
répondu Kishan V 2018-05-04 07:18:58
**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
répondu abhilasha Yadav 2018-05-24 03:42:00

simplement vous pouvez obtenir OnClickListener à kotlin

view1.setOnClickListener{

//body 

}
1
répondu Android Geek 2018-06-13 13:15:51

var tv = findViewById(R.id.tv) comme TextView

    tv.setOnClickListener {
       val i = Intent(this@MainActivity, SecondActivity::class.java)
       startActivity(i)
       finish()
    }
1
répondu CHANDAN KUMAR 2018-06-20 06:38:48

d'Abord trouver le bouton, pour éviter la fonte de la View vous pouvez utiliser le <> comme suit :

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

une fois que vous avez une instance du Button, vous pouvez maintenant attacher l'écouteur de clic comme suit:

button.setOnClickListener {  
 // You code here
}
0
répondu Joseph 2017-11-16 19:12:50
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
répondu Ajay Prajapati 2018-01-04 13:26:01

la façon la plus facile que je sais pour atteindre ce est par Kotlin Extensions Android.

sur votre app / 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
répondu isijara 2018-02-19 07:13:24

si vous voulez simuler la vieille méthode anonyme à Kotlin, j'ai trouvé que ça marchait parfaitement.

 btnNewWay!!.setOnClickListener(object:View.OnClickListener {
    override fun onClick(v: View?) {
        //Your Code Here!
    }})
0
répondu user2288580 2018-03-16 12:32:24

Ajouter clickListener sur le bouton comme ceci

    btUpdate.setOnClickListener(onclickListener)

ajouter ce code dans votre activité

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


        }
    }
0
répondu Jyot 2018-04-18 10:08:53
findViewById<Button>(R.id.signUp)?.setOnClickListener(
    Toast.makeText(mActivity, "Button Clicked", Toast.LENGTH_LONG).show()
)
0
répondu user3694157 2018-06-11 19:01:44

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 ceci:

private fun onButtonClicked(view: View) {
     // do stuff
}
0
répondu hadilq 2018-09-23 12:21:46