Puedes agregar una acción a un Snackbar
, lo que permite al usuario responder a tu mensaje. Si agregas una acción a un Snackbar
, Snackbar
coloca un botón junto al texto del mensaje. El usuario puede activar tu acción presionando el botón. Por ejemplo, en una app de correo electrónico, podría ponerse un botón de deshacer en el mensaje "correo electrónico archivado"; si el usuario hace clic en el botón deshacer, la app retira el correo electrónico del archivo.

Figura 1: Esta barra de notificaciones tiene un botón Deshacer, que restablece el elemento que se acaba de quitar
Para agregar una acción a un mensaje Snackbar
, debes definir un objeto de escucha que implemente la interfaz View.OnClickListener
. El sistema llama al método onClick()
de tu objeto de escucha si el usuario hace clic en la acción del mensaje. Por ejemplo, en este fragmento, se muestra un objeto de escucha para una acción de deshacer:
Kotlin
class MyUndoListener : View.OnClickListener { fun onClick(v: View) { // Code to undo the user's last action } }
Java
public class MyUndoListener implements View.OnClickListener { @Override public void onClick(View v) { // Code to undo the user's last action } }
Usa uno de los métodos SetAction()
para adjuntar el objeto de escucha a tu Snackbar
. Asegúrate de adjuntar el objeto de escucha antes de llamar a show()
, como se muestra en este ejemplo de código:
Kotlin
val mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT) mySnackbar.setAction(R.string.undo_string, MyUndoListener()) mySnackbar.show()
Java
Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT); mySnackbar.setAction(R.string.undo_string, new MyUndoListener()); mySnackbar.show();
Nota: Un Snackbar
desaparece automáticamente después de un tiempo breve, por lo que no puedes contar con que el usuario vea el mensaje o tenga la oportunidad de presionar el botón. Por este motivo, deberías considerar ofrecer una forma alternativa de realizar cualquier acción Snackbar
.