Android: Toast in einem Thread

Wie kann ich Toast- Nachrichten aus einem Thread anzeigen?

  • Fehler beim Anzeigen von Toast
  • Willst du Android Toast verstecken, wenn App im Hintergrund
  • Erstellen eines Vollbild-Custom Toast
  • Posting Toast Nachricht aus einem Thread
  • Button in benutzerdefinierten Android Toast?
  • So stellen Sie Toast Display Zeit weniger als Toast.LENGTH_SHORT
  • Es ist möglich, die Position eines Toastes anzugeben?
  • So zeigen Sie eine Toast-Nachricht aus einer Klasse an, die nicht erweitert Aktivität
  • 7 Solutions collect form web for “Android: Toast in einem Thread”

    Sie können es tun, indem Sie eine Activity 's runOnUiThread Methode aus Ihrem Thread aufrufen:

     activity.runOnUiThread(new Runnable() { public void run() { Toast.makeText(activity, "Hello", Toast.LENGTH_SHORT).show(); } }); 

    Ich habe gern eine Methode in meiner Aktivität namens showToast die ich von überall an rufen kann …

     public void showToast(final String toast) { runOnUiThread(new Runnable() { public void run() { Toast.makeText(MyActivity.this, toast, Toast.LENGTH_SHORT).show(); } }); } 

    Ich nenne es dann am häufigsten von MyActivity auf irgendeinen Thread wie MyActivity

     showToast(getString(R.string.MyMessage)); 

    Dies ist ähnlich wie andere Antworten, aber aktualisiert für neue verfügbare apis und viel sauberer. Auch geht nicht davon aus, dass du in einem Aktivitätskontext bist.

     public class MyService extends AnyContextSubclass { public void postToastMessage(final String message) { Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { @Override public void run() { Toast.makeText(getContext(), message, Toast.LENGTH_LONG).show(); } }); } } 

    So oder so , mit einem Runnable , der den Toast zeigt. Nämlich,

     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(); } 

    Ein Ansatz, der von so ziemlich überall funktioniert, auch von Orten, an denen du keine Activity oder View hast, ist, einen Handler zum Handler zu packen und den Toast zu zeigen:

     public void toast(final Context context, final String text) { Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { public void run() { Toast.makeText(context, text, Toast.DURATION_LONG).show(); } }) } 

    Der Vorteil dieses Ansatzes ist, dass es mit jedem Context , einschließlich Service und Application funktioniert.

    1. handler.sendMessage(); UI Thread Handler Instanz und verwende handler.sendMessage();
    2. Wie Methode 1, aber call post () Methode handler.post();
    3. RunOnUiThread ();
    4. View.post ()
      // Ps: Kann jemand für mich stimmen, ich habe keinen Ruf, damit ich nicht für andere abstimmen kann. Schade! Ich mag StackOverflow.Wirklich gutes Web für Coder!

    Nur ich habe diesen Link durchgemacht und habe die Idee von Looper und schaffte dies

     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(); } 

    Und es wird in deinem Thread genannt. Kontext kann Activity.getContext () erhalten von der Aktivität, die du den Toast zeigen musst.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.