คุณสามารถเพิ่มการดำเนินการลงใน
Snackbar
เพื่อให้ผู้ใช้ตอบกลับข้อความของคุณได้ เมื่อคุณทำเช่นนี้
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") } } ) } } }