Я хотел бы реализовать новую Snackbar, включенную в последнюю библиотеку поддержки дизайна, но то, как она предлагается, кажется нелогичным для меня и, я предполагаю, для многих других.
Когда пользователь выполняет важное действие, я хочу позволить ему отменить его через Snackbar, но, похоже, нет способа определить, когда он отклоняется для выполнения действия. Мне имеет смысл сделать это следующим образом:
- Пользователь выполняет действие.
- Показать Snackbar и обновить пользовательский интерфейс, как если бы действие было завершено (т. е. кажется, что данные отправлены в базу данных, но на самом деле это еще не так).
- Если пользователь нажал «отменить», отменить изменения пользовательского интерфейса. Если нет, то при закрытии Snackbar данные будут отправлены.
Но поскольку я не вижу доступного OnDismissListener, мне пришлось бы:
- Пользователь выполняет действие.
- Немедленно отправьте информацию в базу данных и обновите пользовательский интерфейс.
- Если пользователь нажимает «отменить», отправьте еще один вызов в базу данных, чтобы удалить только что добавленные данные и отменить изменения пользовательского интерфейса.
Мне бы очень хотелось избежать двух вызовов базы данных и просто отправить один, когда приложение знает, что это безопасно (пользователь избежал нажатия «отменить»). Я заметил, что это реализовано в сторонней библиотеке через EventListener, но мне бы очень хотелось придерживаться библиотеки Google.