คุณสามารถเพิ่มการดำเนินการลงใน
Snackbar
เพื่อให้ผู้ใช้ตอบกลับข้อความของคุณได้ เมื่อคุณทำเช่นนี้
Snackbar
จะวางปุ่มถัดจากข้อความ และผู้ใช้
ทริกเกอร์การดำเนินการโดยแตะที่ปุ่ม ตัวอย่างเช่น แอปอีเมลอาจใส่
ปุ่มเลิกทำใน "เก็บอีเมลแล้ว" หากผู้ใช้แตะ
เลิกทำ แอปจะจะนำอีเมลออกจากที่เก็บถาวร
![รูปภาพแสดงแถบแสดงข้อความที่มีปุ่มดำเนินการ "เลิกทำ"](https://developer.android.google.cn/static/images/ui/notifications/action_snackbar_undo.png?authuser=0000&hl=th)
Snackbar
ที่มีปุ่มเลิกทำ
กู้คืนรายการที่นำออก
หากต้องการเพิ่มการดำเนินการลงในข้อความ Snackbar
ให้กำหนดออบเจ็กต์ Listener
ซึ่งใช้
วันที่ View.OnClickListener
ของ Google ระบบจะเรียกฟังก์ชัน
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") } } ) } } }