如何在正在运行的线程中显示警报对话框?
Posted
技术标签:
【中文标题】如何在正在运行的线程中显示警报对话框?【英文标题】:How to show alert dialog in a running thread? 【发布时间】:2012-09-13 06:29:03 【问题描述】:我正在开发一个 android 游戏。在这个游戏中,有火车运行的轨道。这是正在运行的线程。我想在两者之间发生碰撞时显示一个警报对话框。当我应用显示错误的警报对话框时,无法在未调用 looper.prepare()
的线程内创建处理程序。
【问题讨论】:
【参考方案1】:这将对您有所帮助:
runOnUiThread(new Runnable()
@Override
public void run()
// Your dialog code.
);
【讨论】:
当我在我的代码中添加 runOnUiThread 时显示错误:- 方法 runOnUiThread(new Runnable()) 对于 MainGamePanel 类型未定义【参考方案2】:您必须需要在 UI 线程中创建 AlertDialog
否则它将永远无法工作。如果你在不同的线程使用MessageHandler
或者可以使用runOnUiThread
(使用runnable)在里面创建你的对话框。
【讨论】:
【参考方案3】:您可以使用处理程序来完成这项工作。
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable()
@Override
public void run()
// Your UI updates here
);
【讨论】:
应该是mHandler。编辑它。谢谢...:) 你需要初始化变量Handler mHandler= new Handler();【参考方案4】:您可以在 Activity 类中创建一个处理程序,并可以调用 sendMessage 到该处理程序对象。编写代码在Handler的handleMessage方法中显示alert,例如:
活动类
Handler mHandler = new Handler()
public void handleMessage(Message msg)
//Display Alert
;
//Thread
Thread thread= new Thread()
public void run()
//Logic
MHandler.sendEmptyMessage(0);
【讨论】:
【参考方案5】:您必须在 UI 线程上显示您的对话框,如下所示
runOnUiThread(new Runnable()
@Override
public void run()
// Your dialog code.
);
【讨论】:
【参考方案6】:你可以试试这个,检查应用是否可见
Activity currentActivity = MainClassApp.getCurrentActivity();
boolean isAppVisible = currentActivity != null;
if (isAppVisible)
currentActivity.runOnUiThread(() ->
// Your Dialog Code
【讨论】:
以上是关于如何在正在运行的线程中显示警报对话框?的主要内容,如果未能解决你的问题,请参考以下文章