studio programacion herramientas fundamentos con avanzado aplicaciones android listener kotlin

programacion - Android: ¿cómo lograr setOnClickListener en Kotlin?



manual de android en pdf (23)

Agregue clickListener en un botón como este

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

agrega este código en tu actividad

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

Quería saber cómo configuramos onClickListener básico en Kotlin para el desarrollo de Android.


Aquí hay un ejemplo sobre cómo usar onClickListener en Kotlin

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


Hay varias formas diferentes de lograr esto, como lo demuestra la variedad de respuestas a esta pregunta.

Para asignar realmente el oyente a la vista, use los mismos métodos que usaría en Java:

button.onSetClickListener { // Listener code }

Sin embargo, Kotlin facilita la asignación de una lambda como oyente:

val buttonClickListener = View.OnClickListener { view -> // Listener code } button.setOnClickListener(buttonClickListener) another_button.setOnClickListener(buttonClickListener)

Alternativamente, si desea utilizar este oyente para múltiples vistas, considere una expresión lambda (una lambda asignada a una variable / valor para referencia):

tv.setOnClickListener { val i = Intent(this@MainActivity, SecondActivity::class.java) startActivity(i) finish() }


La forma más fácil que sé lograr es a través de las extensiones de Android Kotlin.

En su aplicación / build.gradle

apply plugin: ''kotlin-android-extensions''

Si su botón se llama ''btnAdd'', en su fragmento o actividad importe lo siguiente:

import kotlinx.android.synthetic.main.fragment_transactions.btnAdd

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


Para usar múltiples identificadores:

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

Crear clase anónima:

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() } } }


Primero debe obtener la referencia a la Vista (digamos Button, TextView, etc.) y establecer un OnClickListener a la referencia utilizando el método setOnClickListener ()

import kotlinx.android.synthetic.main.activity_main.*

Consulte el ejemplo de Kotlin SetOnClickListener para obtener un ejemplo completo de Kotlin Android en el que un botón está presente en una actividad y OnclickListener se aplica al botón. Cuando hace clic en el botón, se ejecuta el código dentro del bloque SetOnClickListener.

Actualizar

Ahora puede hacer referencia al botón directamente con su ID al incluir la siguiente declaración de importación en el archivo de clase. Documentation

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

y luego para el botón

button.setOnClickListener()

Consulte el tutorial de Android Studio .


Primero encuentre el botón, para evitar el lanzamiento desde la View , puede usar <> siguiente manera:

button.setOnClickListener { // You code here }

Una vez que tenga una instancia del Button , ahora puede adjuntar el escucha de clics de la siguiente manera:

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 }


Si desea simular la antigua forma anónima en Kotlin, encontré que esto funcionó perfectamente.

btUpdate.setOnClickListener(onclickListener)


Simplemente haga lo siguiente:

button.setOnClickListener{doSomething()}


Simplemente puede obtener OnClickListener en kotlin

view1.setOnClickListener{ //body }


Supongamos que tiene textView para hacer clic

text_view.text = "Hello Kotlin"; text_view.setOnClickListener { val intent = Intent(this@MainActivity, SecondActivity::class.java) intent.putExtra("key", "Kotlin") startActivity(intent) }


Una manera simple sería registrar un escucha de clics y crear un escucha de clics con una expresión lambda.

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

E implementa el clickListener :

private val clickListener: View.OnClickListener = View.OnClickListener { view -> if(view.id == login.id) { // do something here } }

Puede reemplazar _ con un nombre si necesita la vista para usarlo. Por ejemplo, debe verificar la identificación del oyente de clics.

val button = findViewById<Button>(R.id.button) button.setOnClickListener { val intent = Intent(this@MainActivity,ThirdActivity::class.java) intent.putExtra("key", "Kotlin") startActivity(intent) }


Usas así onclickListener en kotlin

findViewById<Button>(R.id.signUp)?.setOnClickListener( Toast.makeText(mActivity, "Button Clicked", Toast.LENGTH_LONG).show() )


Use el siguiente código

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

Código clickListener .

val clickListener = View.OnClickListener {view -> when (view.getId()) { R.id.textview -> firstFun() R.id.button -> secondFun() } }


Use este código para agregar onClickListener en 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() } }


Veo muchas sugerencias aquí, pero a esta colección le falta lo siguiente.

button.setOnClickListener(::onButtonClicked)

y en la clase actual tenemos un método como este:

private fun onButtonClicked(view: View) { // do stuff }


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

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // click listener registered myButton.setOnClickListener(clickListener) }


Método 1:

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

Método 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 } } } }


// 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() }


override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) btnAdd.setOnClickListener { Toast.makeText(context , "Done", 10).show() } }


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


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


**i have use kotlin-extension so i can access directly by button id:** btnSignIN.setOnClickListener { if (AppUtils.isNetworkAvailable(activity as BaseActivity)) { if (checkValidation()) { hitApiLogin() } } }