Comment puis-je afficher Toast les messages d'un fil de discussion ?
Réponses
Trop de publicités?
mjaggard
Points
1020
J'aime avoir une méthode dans mon activité appelée showToast
que je peux appeler de n'importe où...
public void showToast(final String toast)
{
runOnUiThread(new Runnable() {
public void run()
{
Toast.makeText(MyActivity.this, toast, Toast.LENGTH_SHORT).show();
}
});
}
Je l'appelle ensuite le plus souvent de l'intérieur MyActivity
sur un fil comme celui-ci...
showToast(getString(R.string.MyMessage));
yanchenko
Points
24142
Comme ce ou ce avec un Runnable
qui montre le Toast
. A savoir,
Activity activity = // reference to an Activity
// or
View view = // reference to a View
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
showToast(activity);
}
});
// or
view.post(new Runnable() {
@Override
public void run() {
showToast(view.getContext());
}
});
private void showToast(Context ctx) {
Toast.makeText(ctx, "Hi!", Toast.LENGTH_SHORT).show();
}
Hugo
Points
195
Vinoj John Hosan
Points
160
J'ai juste traversé ce lien et j'ai eu l'idée du looper et j'ai créé ceci
public void showToastInThread(final Context context,final String str){
Looper.prepare();
MessageQueue queue = Looper.myQueue();
queue.addIdleHandler(new IdleHandler() {
int mReqCount = 0;
@Override
public boolean queueIdle() {
if (++mReqCount == 2) {
Looper.myLooper().quit();
return false;
} else
return true;
}
});
Toast.makeText(context, str,Toast.LENGTH_LONG).show();
Looper.loop();
}
et il est appelé dans votre thread. Le contexte peut être Activity.getContext() obtenu à partir de l'activité que vous avez pour montrer le toast.