我正在开发一款适用于Android的Andengine游戏。我有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
答案 0 :(得分: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 :(得分:1)
您的代码可能有两个原因无法运行。它是你的活动参数为null或...
显示吐司后很短的时间活动就会消失,在这种情况下它也会杀死吐司,为避免这种情况,你可以像@MehmetSeçkin的回答一样调用activity.getApplicationContext()
。
答案 2 :(得分: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();
答案 3 :(得分:0)
使用:
Toast.makeText(getApplicationContext(), " Hello World", Toast.LENGTH_SHORT).show();
或
Toast.makeText(activity.this, " Hello World", Toast.LENGTH_SHORT).show();
答案 4 :(得分:0)
Toast.makeText(getApplicationContext(), "text", Toast.LENGTH_SHORT).show();
试试这个。
答案 5 :(得分:0)
既然你问为什么;我认为您将活动参考作为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();
答案 6 :(得分:0)
因为你是从课堂上调来的。你需要通过类构造函数从活动中获取上下文,否则你需要使用GetApplicationcontext()。
答案 7 :(得分:0)
确保您要测试的应用已打开通知。那就是我的故事,为什么吐司也不起作用。我一直在寻找一个直截了当的答案,而且碰巧吐司被认为是通知的一部分。有趣的东西,我一无所知。