Je recherche a annuler un Toast pour afficher le suivant. Je recherche plus spécifiquement la comportement des Toast comme dans l'application le monde sur Android. Je m'explique à la sélection d'un nouvelle élément dans le menu on affiche sous forme d'un Toast le nom du menu.
Voici un extrait de mon code :
J'effectue bien l'appel depuis le Thread Main UI. Cependant les Toast s'affiche les un à la suite des autre si je sélectionnes plusieurs éléments rapidement dans le menu sans attendre la fin du TOAST précédent.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 public class MainActivity extends TabActivity { private Toast toast; private String toastMsg; private void toast(){ if(toast!=null){ toast.cancel(); } toast = Toast.makeText(MainActivity.this, toastMsg,Toast.LENGTH_SHORT); toast.show(); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final TabHost tabHost = getTabHost(); final TabWidget tabWidget = getTabWidget(); tabWidget.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { tabHost.setCurrentTab(arg2); toastMsg = "New Tab"+arg2; toast(); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } }
J'ai tenter d’exécuter ce code sur plusieurs versions d'android du 1.5 au 2.2 et aucune différence. J'ai aussi effectué des testes sur téléphone physique et rien ne change non plus. Google fournis dans son SDK du code exemple dans le programme AlarmController et effectue du cancel de ces Toast, cependant le cancel ne change rien comme dans mon programme.
Si vous avez une solution je suis très fortement preneur.
Merci