#java #android #snackbar
#java #Android #snackbar
Вопрос:
я хочу закрыть действие после завершения snackbar. у меня есть два действия A и B. Действие — это открытое действие B с использованием намерения. в B, когда snackbar заканчивается через 3 секунды, B автоматически закрывается с помощью функции finish(). Но как узнать, что snackbar закончился? как только snackbar был запущен, действие B сразу же закрывается, потому что snackbar закончился.
Код в активности B.
Snackbar sb = Snackbar.make(wc, "SAVE", Snackbar.LENGTH_SHORT).setDuration(3000);
sb.show();
finish();
пожалуйста, помогите мне.
Спасибо.
Ответ №1:
Добавьте обратный вызов в свою snackbar следующим образом:
sb.addCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
if (event == Snackbar.Callback.DISMISS_EVENT_TIMEOUT) {
// finish your activity here
}
}
@Override
public void onShown(Snackbar snackbar) {
...
}
});
Комментарии:
1. Спасибо. могу я задать вопрос? где в вашем коде должен быть расположен sb.show() ? в OnShow()? или .. перед sb.addCallback?
2. После добавления обратного вызова покажите SnackBar следующим образом:
Snackbar sb = Snackbar.make(wc, "SAVE", Snackbar.LENGTH_SHORT).setDuration(3000); sb.addCallback(){}; sb.show();
3. Является ли wc вашим корневым представлением в файле макета?