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