如何在正在运行的线程中显示警报对话框?

时间:2012-09-13 06:29:04

标签: android alertdialog game-loop

我正在开发一款Android游戏。在这款游戏中,有火车可以运行的轨道。这是运行线程。我想在两者之间发生碰撞时显示警告对话框。当我正在应用警告对话框时显示错误无法在未调用looper.prepare()的线程内创建处理程序。

6 个答案:

答案 0 :(得分:15)

这将对您有所帮助:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // Your dialog code.
    }
});

答案 1 :(得分:10)

您必须在UI线程内创建AlertDialog否则它永远不会工作。如果您使用不同的线程MessageHandler,或者可以使用runOnUiThread(使用runnable)在内部创建对话框。

答案 2 :(得分:6)

您可以使用处理程序来完成这项工作。

Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
    @Override
    public void run() {
        // Your UI updates here
    }
});

答案 3 :(得分:6)

您可以在Activity Class中创建一个处理程序,并可以调用sendMessage到该处理程序对象。编写代码以在Handler的handleMessage方法中显示警报,例如:

活动类

Handler mHandler = new Handler()
{
    public void handleMessage(Message msg)
    {
       //Display Alert
    }
};

//Thread

Thread thread= new Thread()
{
    public void run()
    {
         //Logic
         MHandler.sendEmptyMessage(0);
    }
}

答案 4 :(得分:1)

您必须在UI线程上显示您的对话框,如下所示

runOnUiThread(new Runnable() {
                @Override
                public void run() {
                // Your dialog code.
                }
            });

答案 5 :(得分:0)

您可以尝试此操作,并检查App是否可见

Activity currentActivity = MainClassApp.getCurrentActivity();
boolean isAppVisible = currentActivity != null;

if (isAppVisible) {
    currentActivity.runOnUiThread(() -> 
    // Your Dialog Code 
}