アクションはスペースに
Snackbar
メッセージに返信できるようにします。これを行うと、
Snackbar
はメッセージ テキストの横にボタンを配置し、ユーザーは
ボタンをタップしてアクションをトリガーします。たとえば、メールアプリでは
[アーカイブ済みメール] の [元に戻す] ボタン表示されます。ユーザーが
[undo] ボタンをクリックすると、アーカイブからメールが元に戻されます。
![UNDO アクション ボタンがあるスナックバーの画像](https://developer.android.com/static/images/ui/notifications/action_snackbar_undo.png?authuser=0000&hl=ja)
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();
SnackbarHost
,
次のように指定します。
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { DACPlaygroundTheme { val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() Scaffold( snackbarHost = { SnackbarHost(snackbarHostState) }, content = { padding -> Button( modifier = Modifier.padding(padding), onClick = { scope.launch { snackbarHostState.showSnackbar( message = "1 item removed", actionLabel = "UNDO", duration = SnackbarDuration.Short ).run { when (this) { Dismissed -> Log.d("SNACKBAR", "Dismissed") ActionPerformed -> Log.d("SNACKBAR", "UNDO CLICKED") } } } } ) { Text("Show snackbar") } } ) } } }