Puedes agregar una acción a una
Snackbar
para permitir que el usuario responda a tu mensaje. Cuando lo hagas,
Snackbar
coloca un botón junto al texto del mensaje y el usuario puede
presiona el botón para activar la acción. Por ejemplo, una app de correo electrónico podría colocar
Un botón para deshacer en su “correo electrónico archivado” mensaje. Si el usuario toca
deshacer, la app quita el correo electrónico del archivo.
Para agregar una acción a un mensaje Snackbar
, define un objeto de escucha
que implementa las
View.OnClickListener
interfaz de usuario. El sistema llama al receptor
onClick()
si el usuario presiona la acción del mensaje. Por ejemplo, este fragmento muestra un
objeto de escucha para una acción de deshacer:
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. } }
Usa uno de los
setAction()
para adjuntar el objeto de escucha a tu Snackbar
. Adjunta el archivo
de la llamada antes de llamar
show()
,
como se indica en esta muestra de código:
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
,
como se muestra en el siguiente ejemplo:
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") } } ) } } }