Probablemente sea popular porque Android Studio convierte Java a button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} })y luego proporciona un aviso sobre su código generado de que deberíamos convertirlo a lambda.
Joe Lapp
6
Kotlin es malditamente poco intuitivo. No tengo idea de por qué Google está invirtiendo tanto en él
codezombie
2
¿Por qué todos publican la misma respuesta con una ligera diferencia? La respuesta es simple view.setOnClickListener { ... }. Parece que todo el mundo está ansioso por ganar reputación.
button.setOnClickListener(object:View.OnClickListener{overridefun onClick(view:View?){// Do some work here}})
Tercero:
button.setOnClickListener(View.OnClickListener{ view ->// Do some work here})
Adelante:
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}}}}
Quinto:
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}}}}
Está lanzando nullPointerException en mi caso. ¿Puedes ayudarme?
MashukKhan
Verifique sus ID de vista, asegúrese de que existan en el archivo xml.
Luvnish Monga
Existen en xml
MashukKhan
Comparte tu fuente incluye XML.
Luvnish Monga
6
Primero debe obtener la referencia a la Vista (por ejemplo, Button, TextView, etc.) y establecer un OnClickListener a la referencia usando el método 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()}
Consulte el ejemplo de Kotlin SetOnClickListener para obtener un ejemplo completo de Android de Kotlin donde un botón está presente en una actividad y OnclickListener se aplica al botón. Al hacer 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 identificación al incluir la siguiente declaración de importación en el archivo de clase. Documentación .
Use este código para agregar onClickListeneren 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()}}
use este muy fácil (establezca la identificación, haga clic en el oyente y navegue de una clase a otra clase)
CHANDAN KUMAR
¡Bienvenido a Stack Overflow! Por favor, no arrojes aquí tu código fuente. Sea amable y trate de dar una descripción agradable a su respuesta, para que a otros les guste y la voten. Ver: ¿Cómo escribo una buena respuesta?
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()}}}
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.setOnClickListener()
Sin embargo, Kotlin facilita la asignación de un lambda como oyente:
button.onSetClickListener {// Listener code}
Alternativamente, si desea utilizar este oyente para múltiples vistas, considere una expresión lambda (una lambda asignada a una variable / valor como referencia):
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*/} })
y luego proporciona un aviso sobre su código generado de que deberíamos convertirlo a lambda.view.setOnClickListener { ... }
. Parece que todo el mundo está ansioso por ganar reputación.Respuestas:
Suponga que tiene textView para hacer clic
fuente
Utilice el siguiente código
clickListener código.
fuente
Aquí hay un ejemplo sobre cómo usar onClickListener en Kotlin
fuente
Método 1:
Método 2:
fuente
Hay cinco formas de utilizar SetOnClickListener:
Primero:
Segundo:
Tercero:
Adelante:
Quinto:
¡Salud!
fuente
Para usar múltiples identificadores:
Crear clase anónima:
fuente
Primero debe obtener la referencia a la Vista (por ejemplo, Button, TextView, etc.) y establecer un OnClickListener a la referencia usando el método setOnClickListener ()
Consulte el ejemplo de Kotlin SetOnClickListener para obtener un ejemplo completo de Android de Kotlin donde un botón está presente en una actividad y OnclickListener se aplica al botón. Al hacer 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 identificación al incluir la siguiente declaración de importación en el archivo de clase. Documentación .
y luego para el botón
Referir tutorial de Android Studio .
fuente
Use este código para agregar
onClickListener
en Kotlinfuente
Simplemente puede obtener OnClickListener en kotlin
fuente
Veo muchas sugerencias aquí, pero a esta colección le falta lo siguiente.
y en la clase actual tenemos un método como este:
fuente
var tv = findViewById(R.id.tv)
como TextViewfuente
fuente
fuente
Una forma sencilla sería registrar un oyente de clics y crear un oyente de clics con una expresión lambda.
E implementar el
clickListener
:Puede reemplazarlo
_
con un nombre si necesita la vista para usarlo. Por ejemplo, debe verificar la identificación del oyente de clics.fuente
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:
Sin embargo, Kotlin facilita la asignación de un lambda como oyente:
Alternativamente, si desea utilizar este oyente para múltiples vistas, considere una expresión lambda (una lambda asignada a una variable / valor como referencia):
fuente
Simplemente haz lo siguiente:
button.setOnClickListener{doSomething()}
fuente
fuente
Usas así onclickListener en kotlin
fuente
fuente
Esta es la solución. A tu código le gustará esto:
No es necesario agregar nada. como abajo:
fuente
Primero busque el botón, para evitar que el elenco
View
se pueda usar de la<>
siguiente manera:Una vez que tenga una instancia de
Button
, ahora puede adjuntar el oyente de clics de la siguiente manera:fuente
fuente
La forma más fácil que conozco de lograrlo es a través de las extensiones de Android de Kotlin.
En su aplicación / build.gradle
apply plugin: 'kotlin-android-extensions'
Si su botón se llama 'btnAdd', entonces en su fragmento o actividad importe lo siguiente:
import kotlinx.android.synthetic.main.fragment_transactions.btnAdd
fuente
Si desea simular la antigua forma anónima en Kotlin, encontré que esto funcionaba perfectamente.
fuente
Agregar clickListener en un botón como este
agrega este código en tu actividad
fuente
Puede usar setOnClickListener así en Kotlin
fuente