我正在使用场景管理,我从场景扩展了不同的类,用于显示不同的模式。 我正在接受Toasting消息的问题。 在从场景扩展的我的Mode1类中,我想显示一个toast消息,但它给出了错误 “无法在未调用looper.prepare()”
的线程内创建处理程序我尝试在处理程序中执行此操作,但结果相同。我试图在主类中创建一个静态处理程序,但没有结果。 任何人都可以告诉我解决方案吗?
答案 0 :(得分:4)
关键是在UI线程上运行它 - 这就是我使用的
public void gameToast(final String msg) {
this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MyMainActivity.this, msg, Toast.LENGTH_SHORT).show();
}
});
}
答案 1 :(得分:2)
只需要创建一个像
这样的方法public static void MakeToast(String Msg)
{
message = Msg;
Handles.sendEmptyMessage(0);
}
static Handler Handles = new Handler()
{
public void handleMessage(android.os.Message msg) {
if(msg.what==0)
{
Toast.makeText(myCxt, message, Toast.LENGTH_SHORT).show();
}
};
};
在你的场景课中你会打电话。 YourBaseGameActivity.MakeToast(“Hello World”);
message也是一个静态String变量。
答案 2 :(得分:1)
您也可以使用以下方式创建Toast消息。
mainActivity.toastOnUiThread("No moves available for REDO",
Toast.LENGTH_SHORT);