Как очищать текущий toast и вставлять нужный текст

Ответить
9bagel
Сообщения: 18
Зарегистрирован: 16 июн 2013, 11:18

Как очищать текущий toast и вставлять нужный текст

Сообщение 9bagel » 29 авг 2013, 14:35

Здравствуйте. Подскажите: как избавиться от очереди в toast и отображать только текущий текст?

9bagel
Сообщения: 18
Зарегистрирован: 16 июн 2013, 11:18

Re: Как очищать текущий toast и вставлять нужный текст

Сообщение 9bagel » 29 авг 2013, 14:47

Нашёл решение здесь viewtopic.php?f=3&p=2897#p2897

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Как очищать текущий toast и вставлять нужный текст

Сообщение trew » 08 окт 2013, 23:21

Код: Выделить всё

Toast toast = Toast.makeText(getApplicationContext(), 
" Почему не получается сделать это сообщение длительным по времени? " , Toast.LENGTH_SHORT); 
toast.setDuration(10000);
toast.setGravity(Gravity.CENTER, 0, 0);	
toast.show();
Если посмотреть help
http://developer.android.com/reference/ ... n%28int%29
Есть у Toast метод: public void setDuration (int duration), который у меня не работает.
из файла манифеста:

Код: Выделить всё

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
А во всплывающей подсказке, при наборе кода в Eclipce:
How long to display the message. Either LENGTH_SHORT or LENGTH_LONG
Тогда зачем этот метод setDuration ?
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Как очищать текущий toast и вставлять нужный текст

Сообщение Mikhail_dev » 09 окт 2013, 09:08

Менять константы. Немного нагуглив
[syntax=java5]
NotificationManagerService.scheduleTimeoutLocked() {
...
long delay = immediate ? 0 : (r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY);
...
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
[/syntax]
Ну собственно тут и велосипеды есть
http://stackoverflow.com/questions/2220 ... ength-long

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Как очищать текущий toast и вставлять нужный текст

Сообщение trew » 09 окт 2013, 10:19

[quote="no--"][/quote]
У Вас работает? У меня не обращает внимание на длительность в константах.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Как очищать текущий toast и вставлять нужный текст

Сообщение Mikhail_dev » 09 окт 2013, 10:54

Не понял. У вас при передаче константы Toast.LENGTH_LONG или Toast.LENGTH_SHORT дают одно время показа тоста?

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Как очищать текущий toast и вставлять нужный текст

Сообщение trew » 09 окт 2013, 11:33

no-- писал(а):Не понял. У вас при передаче константы Toast.LENGTH_LONG или Toast.LENGTH_SHORT дают одно время показа тоста?
Не работает, когда в Toast передаем свою константу, вместо Toast.LENGTH_LONG или Toast.LENGTH_SHORT
private static final int LONG_DELAY = 8500; // 8.5 seconds
Длительность показа моей константы сравнима с длительностью Toast.LENGTH_LONG, где-то 2 секунды.

setDuration если устарела, почему в хелпе ничего не сказано об этом?
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Как очищать текущий toast и вставлять нужный текст

Сообщение Mikhail_dev » 09 окт 2013, 12:21

А, понял. Вы просто не поняли исходный код Андроида, что я привёл.
Задержка показа рассчитывается по формуле
r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY
или другими словами то значение, что Вы передали в setDuration если равно константе Toast.LENGTH_LONG , то продолжительность показа тоста будет равна LONG_DELAY (т.е. 3.5. секунды), иначе (во всех других случаях, будь то Toast.LENGTH_SHORT, либо значение 100500) задержка будет идти равная константе SHORT_DELAY, т.е. две секунды.
Отсюда вывод что своё значение поставить нельзя. Метод setDuration работает, но работает он для смены этих двух констант и не более. Представьте что это тумблер. вкл/выкл.

Ответить