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