Adicionar ação a uma mensagem

Você pode adicionar uma ação a um Snackbar, permitindo que o usuário responda à sua mensagem. Se você adicionar uma ação a um Snackbar, o Snackbar colocará um botão ao lado do texto da mensagem. O usuário pode acionar sua ação pressionando o botão. Por exemplo, um app de e-mails pode colocar um botão desfazer na mensagem "e-mail arquivado". Se o usuário clicar no botão desfazer, o app removerá o e-mail do arquivo.

Figura 1. Este Snackbar tem um botão Desfazer, que restaura o item que acabou de ser removido.

Para adicionar uma ação a uma mensagem do Snackbar, você precisa definir um objeto listener que implemente a interface View.OnClickListener. O sistema chamará o método onClick() do listener se o usuário clicar na ação da mensagem. Por exemplo, este snippet mostra um listener para uma ação de desfazer:

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

Use um dos métodos SetAction() para anexar o listener ao seu Snackbar. Anexe o listener antes de chamar show(), como mostra este exemplo 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();
    

Observação: um Snackbar desaparece automaticamente depois de um curto período. Assim, não é possível garantir que o usuário verá a mensagem ou terá a chance de pressionar o botão. Por isso, considere a possibilidade de oferecer uma forma alternativa de realizar qualquer ação do Snackbar.