En el ejemplo mostramos una snackbar con una acción para reintentar y queremos finalizar una actividad solo en el caso de que el usuario descarte la snackbar (por ejemplo haciendo swipe). Nunca cuando pulse la acción para reintentar.
Snackbar.make(coordinator, message, Snackbar.LENGTH_INDEFINITE) .setAction(R.string.retry, new View.OnClickListener() { @Override public void onClick(View view) { // Retry operation } }) .setCallback(new Snackbar.Callback() { @Override public void onDismissed(Snackbar snackbar, int event) { super.onDismissed(snackbar, event); if (event != Snackbar.Callback.DISMISS_EVENT_ACTION) { // Close activity, only if snackbar was dismissed not pressing action button finish(); } } }) .show();
En el método «onDismissed» podemos recuperar el evento generado y comprobar si es uno de los que nos interesa.