Android SDK удерживает Toast от исчезновения - PullRequest
2 голосов
/ 19 июля 2011

Быстрый вопрос: есть ли способ отобразить сообщение о тосте, которое не исчезнет, ​​пока я не позвоню на него cancel()?

Я попытался установить для duration что-то вроде 9999но это не работает.

Ответы [ 6 ]

4 голосов
/ 19 июля 2011

Есть ли способ отобразить всплывающее сообщение, которое не исчезнет, ​​пока я не вызову на нем метод cancel ()?

Нет, не напрямую из SDK, но вы можете «подправить» свой Toast, чтобы он работал дольше, вызывая show() столько раз, сколько пожелаете, используя потоки. См. эту статью для получения дополнительной информации.

3 голосов
/ 19 июля 2011

A Toast, который не исчезнет, ​​пока вы не отмените его, называется Dialog (или AlertDialog). Целое число, которое вы передаете Toast.setDuration(), является флагом, а не значением, оно распознает только значения Toast.LENGTH_SHORT и Toast.LENGTH_LONG.

1 голос
/ 19 июля 2011

Описание Toast говорит:

"Тост - это представление, содержащее небольшое небольшое сообщение для пользователя. Класс тоста помогает вам создавать и показывать эти ... "

" ... Идея состоит в том, чтобы быть как можно более ненавязчивым, в то же время показывая пользователю информацию, которую вы хотите, чтобы он увидел. Два примера - это регулировка громкости и краткое сообщение о том, что ваши настройкибыли сохранены ... "

Что касается параметра продолжительности, он должен быть одним из LENGTH_LONG или LENGTH_SHORT - 1 или 0 соответственно.

Используйте диалог, который выглядит как тост, если вам действительно нужно, но я не рекомендую делать это, потому что это не будет тем, что пользователь ожидает от тоста.

1 голос
/ 19 июля 2011

Тостовое сообщение работает со временем. Нет способа управлять им с помощью отмены. Вы должны использовать Диалог для цели

0 голосов
/ 29 июня 2013

Я знаю, что этот пост старый, но для других, кто сталкивается с ним, вы можете использовать небольшую библиотеку SuperToasts, которую я собрал.

Вы можете найти библиотеку здесь .

Существует неопределенная опция для тостов, добавляемых в действие, а именно SuperActivityToast.Я специально не добавил эту функцию в стандартные SuperToasts, класс, имитирующий стандартные Toasts, потому что SuperToast может задерживаться до тех пор, пока ваше приложение не будет убито, поскольку оно добавляется в WindowManager, а не в Activity.SuperActivityToasts добавляются в контент действия и будут уничтожаться вместе с вашим действием, что дает возможность сделать их неопределенными.

0 голосов
/ 19 июля 2011

Официальный документ говорит (http://developer.android.com/reference/android/widget/Toast.html#makeText(android.content.Context, int, int) ):

public static Toast makeText (Context context, int resId, int duration)

Since: API Level 1
Make a standard toast that just contains a text view with the text from a resource.
Parameters

context    The context to use. Usually your Application or Activity object.
resId      The resource id of the string resource to use. Can be formatted text.
duration   How long to display the message. Either LENGTH_SHORT or LENGTH_LONG
Throws     Resources.NotFoundException  if the resource can't be found.

Это означает, что прямого способа сделать это не существует.Вы должны будете создать свой собственный код для этого.Поскольку тосты полностью перекрывают друг друга, вы можете вызывать один и тот же тост каждую секунду с потоком в качестве примера и использовать собственный метод cancel () для завершения этого потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...