Пользовательский тост Отмена не работает - PullRequest
6 голосов
/ 22 марта 2011

Я видел несколько вопросов об отмене тостов. Никто из них не работает.

У меня есть собственный тост. Код для этого всего, кроме одной строки, такой же как http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView

Разница заключается в следующем.

  1. Переменная toast определяется как переменная класса
  2. Весь код Java написан в методе.
  3. В начале этого метода я добавил следующую строку, чтобы отменить тост.

    if (toast!=null){
        toast.cancel();
    }
    

Метод вызывается, когда пользователь выбирает (onClick) вид / макет. Проблема в том, что когда пользователь выбирает несколько раз, тост будет поставлен в очередь (toast.cancel не работает).

Какие-нибудь решения?

[обновление] Я попытался сделать объект тост статической переменной. Все еще не работает.

Ответы [ 4 ]

7 голосов
/ 30 октября 2011

Я страдал от той же проблемы (пользовательский тост в очереди) и нашел решение. В моем случае все работало нормально.

Наличие пользовательского объекта тоста initially set to null.

  • Если это значение равно null, создайте новый пользовательский объект тоста с помощью «new»

  • Поскольку вы занимаетесь одним и тем же делом, не «новый» для создания нового объекта. Вместо этого используйте этот объект. Поскольку setText() не будет работать в этом случае, используйте setView(), как и в случае с вашим собственным тостом.

  • Таким образом show(), cancel(), show(), cancel() работал именно так, как я ожидал. Без задержки, без очереди.

Надеюсь, это поможет.

2 голосов
/ 08 апреля 2011

В конце концов, я создал пользовательский диалог, чтобы пользователю было запрещено делать что-либо еще (и избегать появления нескольких тостов).Добавлено событие onClick Listener, чтобы закрыть диалоговое окно, когда пользователь нажимает на него.

Печально, что Toast.cancel () не работает.

0 голосов
/ 22 ноября 2012

Используйте этот код для пользовательского текста:

LayoutInflater mInflater=LayoutInflater.from(context);
View view=mInflater.inflate(R.layout.tost_layout,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.show();
0 голосов
/ 22 марта 2011

в указанном выше коде toast.setDuration(Toast.LENGTH_LONG);, в котором вы используете toast.setDuration(Toast.LENGTH_SHORT); или задаете определенное время. Журнал отменяется автоматически. Мы не можем его отменить

...