(android) как закрыть действие после завершения snackbar?

#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 вашим корневым представлением в файле макета?