Sie können einer
Snackbar
damit der Nutzer auf Ihre Nachricht antworten kann. Wenn Sie dies tun,
Snackbar
blendet eine Schaltfläche neben dem Nachrichtentext ein und der Nutzer kann
die Aktion durch Tippen auf die Schaltfläche. Eine E-Mail-App könnte beispielsweise
Schaltfläche Rückgängig machen unter „E-Mail archiviert“ angezeigt. Wenn Nutzende das Symbol
Rückgängig machen klicken, entfernt die App die E-Mail wieder aus dem Archiv.
Wenn Sie einer Snackbar
-Nachricht eine Aktion hinzufügen möchten, definieren Sie ein Listener-Objekt
das die
View.OnClickListener
. Das System ruft die Methode
onClick()
wenn der Nutzer auf die Nachrichtenaktion tippt. Dieses Snippet zeigt beispielsweise
Listener für die Aktion "Rückgängig machen":
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. } }
Verwenden Sie eine der
setAction()
, um den Listener an Snackbar
anzuhängen. Hängen Sie
vor dem Anruf zuhören
show()
,
wie in diesem Codebeispiel gezeigt:
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
,
Dies wird im folgenden Beispiel gezeigt:
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") } } ) } } }