Wyświetlanie Toast-a

0

Wyświetlam sobie Toasta w klasie dziedziczącej po SurfaceView w taki sposób

                         if(last_toast!=null)last_toast.cancel();
			Toast toast = Toast.makeText(cnt, "Value: "+df.format(wartt)+" Time: "+czas,200);
		
			toast.show();
			
			last_toast=toast;

Co ma spowodować że jeżeli poprzedni wyświetlony tościk jest aktywny, to najpierw go przerwij a dopiero później wyświetlaj.
cnt to zmienna typu Context ustawiana przez metodę wywołaną w Activity poprzez getApplicationContext().

Na Telefonach działa, na Tablecie nie (telefon Android 4.1.1 Tablet 4.0.4)

Spróbowalem też w taki sposób że stworzyłem w Activity funkcje wyświetl tosta

	public Toast pokazTosta(String text, int dl){
		Toast toast = Toast.makeText(getApplicationContext(), text, dl);

		toast.show();
		return toast;
	}
	

i wygląda wywołanie wtedy tak:

     if(last_toast!=null)last_toast.cancel();
     last_toast=ma.pokazTosta("Value: "+df.format(wartt)+" Time: "+czas, 200);

gdzie ma to referencja do Activiti, ale ponownie na telefonie działa na Tablecie nie.
Czy to kwestia wersji Androida( chcociaż nie dogrzebałem się nigdzie do info na ten toastów w poszczególnych wersjach....)

całość wyświetlania Toast-a odbywa się w przeciążonej metodzie onTouchEvent jeżeli ma to jakieś znaczenie :)

z gory dzięki za pomoc

Wojtek

0
wojciechmaciejewski napisał(a):

Na Telefonach działa, na Tablecie nie
...
gdzie ma to referencja do Activiti, ale ponownie na telefonie działa na Tablecie nie.

"Nie działa" to faktycznie "szczegółowy" opis problemu.

0

łokey może nie każdy zrozumie mój skrót myślowy

Co ma spowodować że jeżeli poprzedni wyświetlony tościk jest aktywny, to najpierw go przerwij a dopiero później wyświetlaj......
Na Telefonach działa, na Tablecie nie (telefon Android 4.1.1 Tablet 4.0.4)

Chodzi o to że na Tablecie z niższym Androidem nie wyświetla nowych toast-ów. zazwyczaj bo co jakiś czas losowo któryś z rzędu wyświetli. W obu przypadkach zarówno jak wywołuję pokazanie Toastu w ontouchevent jak i w nadrzędnym Activity

1

A już wiem w czym problem. Użyłeś niedozwolonej wartości duration! duration nie jet wyrażone w jakichkolwiek jednostkach! Musi być równe Toast.LENGTH_SHORT(0) lub Toast.LENGTH_LONG(1). Co jest wyraźnie napisane w dokumentacji.
Zapewne użycie wartości 200 daje taki dziwny efekt.

0

Faktycznie , poszedłem na skróty z jakiegoś przykładu.

Myślałem że jak z palca wpiszę będzie działać O_o. Czasem warto dokumentację przeglądnąć.
Dzięki :)

EDIT. generalnie z tego co widzę problemem na androidzie 4.0.4 jest wywołanie cancel() dla Toasta.

Wywołanie go blokuje każdy następny nie wiem czemu...

0

Następna ciekawostka. Toasty się wyświetlają w losowym momencie bez ładu i składu. Ciągle wyłącznie na Tablecie z Androidem 4.0.4. Na telefonie 4.1.1 i emulatorze działa tak jak powinno
:(

i Wszystko to się dzieje jak używana jest funkcja cancel() do Toastu. Jezeli jej nie ma to sie grzecznie wyświetlają jeden po drugim :/tyle że trwa to wtedy pół godziny jak ktoś ponaciskał jak czubek

EDIT: To chyba nie jest kwestia wersji androida ale wygląda to tak że jak na tym Tablecie Toasty nie wiedzieć czemu pojawiają się z około 1 sekundowym opóźnieniem na ekranie. Przez to jak nawciska się jak głupi żeby się pojawiały to urządzenie sumuje czas tego nie wyświetlania przez sekunde( przykladowo 5 razy naciśniesz to wtedy po 5 sekundach pojawi się Toast)

Bardzo to dziwne....

EDIT EDIT
Problemem nie jest samo wyświetlanie Toasta ale onTouchEvet które na tym konkretnym tablecie za każdym razie wykonuje się ok 3-4 krotnie przez co blokowało wyświetlanie Toasta (dlaczego się to dzieje to nie mam pojęcia) przy tworzeniu nowego obiektu typu Toast.

W tym konkretnym przypadku pomaga sprawdzenie treści wyświetlanej w toaście , i jeżeli jest taka sama to nie wyświetlać ale co zrobić fachowo żeby zgrało się to nie mam pojęcia.

Dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1