Bạn có thể thêm một hành động vào Snackbar
để cho phép người dùng phản hồi tin nhắn của bạn. Khi bạn thực hiện việc này, Snackbar
sẽ đặt một nút bên cạnh văn bản tin nhắn và người dùng có thể kích hoạt hành động của bạn bằng cách nhấn vào nút đó. Ví dụ: ứng dụng email có thể đặt nút huỷ trên thông báo "email đã lưu trữ". Nếu người dùng nhấn vào nút huỷ, ứng dụng sẽ lấy email đó ra khỏi tệp lưu trữ.

Snackbar
có nút hành động huỷ để khôi phục một mục đã xoá.
Để thêm một thao tác vào thông báo Snackbar
, hãy xác định một đối tượng trình nghe triển khai giao diện View.OnClickListener
. Hệ thống sẽ gọi phương thức onClick()
của trình nghe nếu người dùng nhấn vào thao tác tin nhắn. Ví dụ: đoạn mã này cho thấy một trình nghe cho thao tác huỷ:
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. } }
Sử dụng một trong các phương thức setAction()
để đính kèm trình nghe vào Snackbar
. Đính kèm trình nghe trước khi gọi show()
, như trong đoạn mã mẫu này:
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
như trong ví dụ sau:
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") } } ) } } }