6 月 3 日の「#Android11: The Beta Launch Show」にぜひご参加ください。

メッセージへのアクションの追加

Snackbar にアクションを追加することで、ユーザーがメッセージに対応できるようになります。Snackbar にアクションを追加すると、Snackbar によりメッセージ テキストの横にボタンが表示されます。ユーザーはボタンを押すとアクションをトリガーできます。たとえば、メールアプリで「アーカイブしたメール」のメッセージに「元に戻す」ボタンが配置される場合があります。「元に戻す」ボタンをクリックすると、アーカイブしたメールが元に戻ります。

図 1. この Snackbar には「元に戻す」ボタンがあり、削除されたばかりのアイテムを復元します。

Snackbar メッセージにアクションを追加するには、View.OnClickListener インターフェースを実装するリスナー オブジェクトを定義する必要があります。ユーザーがメッセージ アクションをクリックすると、リスナーの onClick() メソッドが呼び出されます。たとえば、次のスニペットには「元に戻す」アクションのリスナーが示されています。

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

いずれかの SetAction() メソッドを使用して、リスナーを Snackbar に接続します。次のコードサンプルに示すように、show() を呼び出す前に必ずリスナーを接続してください。

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();
    

注: Snackbar はしばらくすると自動的に消えるため、ユーザーにメッセージを表示したり、ボタンを押してもらったりすることは期待できません。このため、Snackbar アクションを行う別の方法を用意することも検討してください。