Страница 1 из 1

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

Добавлено: 29 авг 2013, 14:35
9bagel
Здравствуйте. Подскажите: как избавиться от очереди в toast и отображать только текущий текст?

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

Добавлено: 29 авг 2013, 14:47
9bagel
Нашёл решение здесь viewtopic.php?f=3&p=2897#p2897

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

Добавлено: 08 окт 2013, 23:21
trew

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

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 ?

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

Добавлено: 09 окт 2013, 09:08
Mikhail_dev
Менять константы. Немного нагуглив
[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

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

Добавлено: 09 окт 2013, 10:19
trew
[quote="no--"][/quote]
У Вас работает? У меня не обращает внимание на длительность в константах.

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

Добавлено: 09 окт 2013, 10:54
Mikhail_dev
Не понял. У вас при передаче константы Toast.LENGTH_LONG или Toast.LENGTH_SHORT дают одно время показа тоста?

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

Добавлено: 09 окт 2013, 11:33
trew
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 если устарела, почему в хелпе ничего не сказано об этом?

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

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