Android Toast Messages not working

user3076301 picture user3076301 · Dec 19, 2013 · Viewed 26k times · Source

I'm developing a game via Andengine for Android. I have MainActivity class and GameScene class. I use Toast messages in GameActivity. And it is working.

Toast.makeText(this, " Hello World", Toast.LENGTH_SHORT).show();

So I wanna use Toast messages in GameScene class. But it doesn't work. Here is the code:

Toast.makeText(activity, " Hello World", Toast.LENGTH_SHORT).show();

I have to use "activity" instead of "this". But it doesn't work

why?

EDITED:

when I use second one, an error occurs. LogCat: http://s29.postimg.org/k8faj9mdj/Capture.png

Answer

laalto picture laalto · Dec 19, 2013

You're trying to display a Toast in a background thread. You should do all your UI operations on the main UI thread.

The exception RuntimeException: Can't create handler inside thread that has not called Looper.prepare() can be a little cryptic for beginners but essentially it tells you that you're in a wrong thread.

To solve it, wrap the toast to e.g. runOnUiThread():

activity.runOnUiThread(new Runnable() {
  @Override
  public void run() {
    Toast.makeText(...).show();
  }
});