
Hay distintas formas de Manejar el eventos Clicks en Android:
1.- Click en XML
2.- Click en linea
3.- Click by IDS en ‘when’
1.- Click en XML
No aconsejable, no deberíamos tener nombre de métodos ni lógica de nuestro código en la vista. Debería ser totalmente independiente.
class ClickEventsActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_click_events)//<--En esta vista asignar la funcion xmlClick
}
//1.- Click en XML// No aconsejable -> no deberiamos tener nombre de metodos, logica de nuestro codigo, esta diseñado para la interfaz de usuario
//Regla Obligatoria para Clicks en XMLs:
// 1.- El método tiene que ser público
// 2.- Los nombres tienen que coincidir
// 3.- Recibe un solo parámetro(View)
fun xmlClick(view: View){
Toast.makeText(this,"Click by XML",Toast.LENGTH_SHORT).show()
}
}
Implementacion del Botón de la vista :
<Button
android:id="@+id/buttonClickXML"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:text="@string/button_click_xml"
android:onClick="xmlClick" //<----Implementado el Click en la Vista
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
2.- Click en Linea
class ClickEventsActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_click_events)
clickInLine() // Se llama aqui para poder "registrarlo"
}
//2.- Click en linea
private fun clickInLine(){
val btn = findViewById<Button>(R.id.buttonClickInLine)
btn.setOnClickListener{
Toast.makeText(this,"Click in Line!",Toast.LENGTH_SHORT).show()
}
}
}
3.- Click by IDS en ‘when’
class ClickEventsActivity : AppCompatActivity(), View.OnLongClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_click_events)
val btn1 = findViewById<Button>(R.id.buttonClickMulti1)
val btn2 = findViewById<Button>(R.id.buttonClickMulti2)
val btn3 = findViewById<Button>(R.id.buttonClickMulti3)
btn1.setOnLongClickListener(this)
btn2.setOnLongClickListener(this)
btn3.setOnLongClickListener(this)
}
override fun onLongClick(view: View): Boolean {
when(view.id){
R.id.buttonClickMulti1 -> Toast.makeText(this,"Click Multi 1",Toast.LENGTH_SHORT).show()
R.id.buttonClickMulti2 -> Toast.makeText(this,"Click Multi 2",Toast.LENGTH_SHORT).show()
R.id.buttonClickMulti3 -> Toast.makeText(this,"Click Multi 3",Toast.LENGTH_SHORT).show()
}
return true
}
}
