Android Toast消息不起作用

问题描述 投票:5回答:8

我正在通过Andengine为Android开发一款游戏。我有MainActivity类和GameScene类。我在GameActivity中使用Toast消息。它正在发挥作用。

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

所以我想在GameScene类中使用Toast消息。但它不起作用。这是代码:

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

我必须使用“活动”而不是“这个”。但它不起作用

为什么?

编辑:

当我使用第二个时,会发生错误。 LogCat:http://s29.postimg.org/k8faj9mdj/Capture.png

java android andengine android-toast
8个回答
24
投票

你试图在后台线程中显示Toast。您应该在主UI线程上执行所有UI操作。

RuntimeException: Can't create handler inside thread that has not called Looper.prepare()的例外对于初学者来说可能有点神秘,但实际上它告诉你你的错误。

要解决它,请将吐司包裹在例如runOnUiThread()

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

1
投票

您的代码无法工作可能有两个原因。它是以太你的活动参数为null或...

显示吐司之后的短时间活动就会消失,在这种情况下它也会杀死吐司,为了避免这种情况,你可以像@MehmetSeçkin一样调用activity.getApplicationContext()


1
投票

使用以下之一

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

        Toast.makeText(getBaseContext(),"please Create your Account First", Toast.LENGTH_SHORT).show();


      Toast.makeText(GameActivity.this,"please Create your Account First", Toast.LENGTH_SHORT).show();

0
投票

使用:

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

要么

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

0
投票
Toast.makeText(getApplicationContext(), "text", Toast.LENGTH_SHORT).show();

试试这个。


0
投票

既然你问为什么;我认为您将活动参考作为Toa​​st消息的上下文,这就是它无法正常工作的原因。

如果您尝试从活动外部显示Toast消息,则可以尝试:

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

或者来自GameActivity

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

或者来自MainActivity

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

0
投票

因为你是从班级打电话的。您需要通过类构造函数从活动中获取上下文,否则您需要使用GetApplicationcontext()。


0
投票

确保您正在测试的应用已启用通知。那是我的故事,为什么吐司也不起作用。我一直在寻找一个直接的答案,只是发生吐司被认为是通知的一部分。有趣的东西,我不知道。

© www.soinside.com 2019 - 2024. All rights reserved.