J'essaie de montrer un toast avant une boucle for, cependant, le toast ne s'affiche pas. J'ai aussi essayé d'ajouter un snack, mais ça n'a pas marché non plus. Je voudrais savoir pourquoi le toast ne tire pas d'abord. J'ai même essayé ce qui suit, mais il a continué à boucler:Afficher le toast avant une boucle for ne fonctionne pas
Toast toast = Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT);
while (!toast.getView().isShown()) {
toast.show();
}
Comment puis-je montrer un toast avant une boucle for?
ArrayList<String> pizzaBases = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
main.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT);
Snackbar.make(findViewById(android.R.id.content), "Had a snack at Snackbar", Snackbar.LENGTH_LONG).show();
}
});
SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
for (int i = 0; i < 100; i++) {
try {
String pizza = preferences.getString("TypeOfBase" + i, "");
if (!pizza.equals("")) {
pizzaBases.add(pizza);
}
} catch (NullPointerException e) {
//Do nothing here
}
}
}
});
Button button1 = (Button) findViewById(R.id.buttonOne);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (String myString : pizzaBases) {
System.out.println(myString);
}
}
});
}
J'ai essayé des solutions comme runOnUiThread, AsyncTask et en boucles, mais tous ne montrent pas de pain ni un snack-bar.
EDIT:
Je trouve que l'interface utilisateur uniquement mises à jour après la boucle se fait. Je me demande pourquoi il le fait, bien qu'il soit activé en premier.
Je voudrais dire à l'utilisateur que la fonction est déclenchée avec succès quand il clique sur le bouton.C'est nécessaire, car l'utilisateur doit attendre et je voudrais lui dire pourquoi. Dans cet exemple c'est "Hello", mais dans la version ce sera un message différent. – Jason
S'il est important que l'utilisateur voit le message immédiatement, vous ne devriez pas vous fier aux toasts. Je suggère de l'intégrer quelque part dans votre interface utilisateur, par exemple en affichant le message dans un TextView ou en changeant le texte du bouton lorsque l'utilisateur clique dessus (certains sites font cela, ils désactivent le bouton et le texte devient "Envoi. .. "avec un indicateur de progression). Mais comment l'implémenter est plus une question d'UX. Vous pouvez également utiliser quelque chose comme Crouton: https://play.google.com/store/apps/details?id=de.keyboardsurfer.app.demo.crouton – Dalmas
J'ai vérifié, et a découvert que l'interface utilisateur seulement mises à jour après le pour boucle, bien qu'il se déclenche avant la boucle for .. – Jason