Manejo de eventos Click en Button | Android

Hay 2 formas de manejar el evento de clic en el botón

  • Al hacer clic en el diseño xml
  • Usando un OnClickListener

Al hacer clic en el diseño XML

Cuando el usuario hace clic en un botón, el objeto Button recibe un evento de clic.

Para hacer que el evento de clic funcione, agregue android:onClickun atributo al elemento Botón en su diseño XML. El valor de este atributo debe ser el nombre del método al que desea llamar en respuesta a un evento de clic. La actividad que aloja el diseño debe implementar el método correspondiente.

NOTA:
Si usa este controlador de eventos en su código, asegúrese de tener ese botón en su MainActivity. No funcionará si usa este controlador de eventos en un fragmento porque el atributo onClick solo funciona en Activity o MainActivity.

Ejemplo:

<Button xmlns:android="http:// schemas.android.com/apk/res/android"
    android:id="@+id/button_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage" 
/>

En la clase MainActivity

/** Called when the user touches the button */
public void sendMessage(View view)
{
    // Do something in response to button click
}

Asegúrese de que su método sendMessage tenga lo siguiente:

  • ser publico
  • Vacío de devolución
  • Defina una Vista como su único parámetro (esta será la Vista en la que se hizo clic)
  • Usando un OnClickListener

    También puede declarar el controlador de eventos de clic mediante programación en lugar de en un diseño XML. Este código de controlador de eventos se prefiere principalmente porque se puede usar tanto en actividades como en fragmentos.

    Hay dos formas de hacer este controlador de eventos programáticamente:

    • Implementando View.OnClickListener en su actividad o fragmento.
    • Creando un nuevo View.OnClickListener anónimo.

    Implementando View.OnClickListener en su actividad o fragmento

    Para implementar View.OnClickListeneren su Actividad o Fragmento, debe anular onClickel método en su clase.

    En primer lugar, vincule el botón en el diseño xml a java llamando al findViewById()método.
    R.id.button_sendhace referencia al botón en XML.

    mButton.setOnClickListener(this);significa que desea asignar un oyente para su botón «en esta instancia» que representa esta instancia OnClickListenery, por esta razón, su clase debe implementar esa interfaz.

    <RelativeLayout
        xmlns:android="http:// schemas.android.com/apk/res/android"
        xmlns:app="http:// schemas.android.com/apk/res-auto"
        xmlns:tools="http:// schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.sample.MainActivity" >
      
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button_send" />
    </RelativeLayout>
    

    Código de actividad principal:

    public class MainActivity extends AppCompatActivity
        implements View.OnClickListener {
        private Button mButton;
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            mButton = findViewById(R.id.button_send);
            mButton.setOnClickListener(this);
        }
      
        @Override
        public void onClick(View view)
        {
            switch (view.getId()) {
            case R.id.button_send:
                // Do something
            }
        }
    }
    

    Si tiene más de un evento de clic de botón, puede usar mayúsculas y minúsculas para identificar en qué botón se hace clic.

    Creación de View.OnClickListener anónimo

    Vincule el botón del XML llamando al findViewById()método y configure el oyente onClick usando el setOnClickListener()método.

    Código de actividad principal:

    public class MainActivity extends AppCompatActivity {
      
        private Button mButton;
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            mButton = findViewById(R.id.button_send);
            mButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view)
                {
                    // Do something
                }
            });
        }
    }
    

    setOnClickListenertoma un OnClickListenerobjeto como parámetro. Básicamente, está creando una subclase anónima OnClickListener en el parámetro.

    Es como lo mismo en Java cuando puedes crear un nuevo hilo con una subclase anónima.

    Publicación traducida automáticamente

    Artículo escrito por Vijayaraghavan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *