คุณสามารถเพิ่มการดำเนินการใน
Snackbar
เพื่อให้ผู้ใช้ตอบกลับข้อความของคุณได้ เมื่อทำเช่นนี้
Snackbar จะวางปุ่มไว้ข้างข้อความ และผู้ใช้จะ
เรียกใช้การดำเนินการของคุณได้โดยแตะปุ่ม เช่น แอปอีเมลอาจใส่ปุ่มเลิกทำในข้อความ "เก็บอีเมล" หากผู้ใช้แตะปุ่มเลิกทำ แอปจะนำอีเมลออกจากที่เก็บ
Snackbar ที่มีปุ่มดำเนินการเลิกทำซึ่ง
กู้คืนรายการที่นำออก
หากต้องการเพิ่มการดำเนินการไปยังข้อความ Snackbar ให้กำหนดออบเจ็กต์ Listener
ที่ใช้
อินเทอร์เฟซ View.OnClickListener
ระบบจะเรียกใช้เมธอด
onClick() ของ Listener หากผู้ใช้แตะการดำเนินการกับข้อความ ตัวอย่างเช่น ข้อมูลโค้ดนี้แสดง
เครื่องมือฟังสำหรับการดำเนินการเลิกทำ
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()
เพื่อแนบ Listener กับ Snackbar แนบ
Listener ก่อนเรียก
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") } } ) } } }