我正在通过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
你试图在后台线程中显示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();
}
});
您的代码无法工作可能有两个原因。它是以太你的活动参数为null或...
显示吐司之后的短时间活动就会消失,在这种情况下它也会杀死吐司,为了避免这种情况,你可以像@MehmetSeçkin一样调用activity.getApplicationContext()
。
使用以下之一
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();
使用:
Toast.makeText(getApplicationContext(), " Hello World", Toast.LENGTH_SHORT).show();
要么
Toast.makeText(activity.this, " Hello World", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "text", Toast.LENGTH_SHORT).show();
试试这个。
既然你问为什么;我认为您将活动参考作为Toast消息的上下文,这就是它无法正常工作的原因。
如果您尝试从活动外部显示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();
因为你是从班级打电话的。您需要通过类构造函数从活动中获取上下文,否则您需要使用GetApplicationcontext()。
确保您正在测试的应用已启用通知。那是我的故事,为什么吐司也不起作用。我一直在寻找一个直接的答案,只是发生吐司被认为是通知的一部分。有趣的东西,我不知道。