我在尝试将ProgressDialog放入我的应用程序时遇到了麻烦。在我的GameEngine类(没有扩展任何东西)中,我有如下所示的代码。第一行产生运行时异常,虽然我遇到了这个似乎是同一个错误的线程:Android TimerTask throws RuntimeException if Show ProgressDialog is added in run(),但我真的不明白如何实现该解决方案。任何帮助将不胜感激,谢谢。
//Create ProgressDialog
ProgressDialog dialog = ProgressDialog.show(context, "",
"Loading...", true);
//Set Clusters before level starts
for (int i = 0; i < 80; i++)
{
updateBacteria();
updateAttraction();
checkCollisions();
moveObjectsAwayFromWalls();
}
dialog.dismiss();
答案 0 :(得分:2)
您只能在UI线程中显示对话框(这是扩展Activity的主要类)。为了能够这样做,您可以编写Handler
并使用它将消息从非UI线程发送到UI线程。 Android有一个这样的例子in their ProgressDialog example.查看他们在“带有第二个线程的示例ProgressDialog”下的代码片段。
您也可以按照您提供的链接答案中所述的相同方法,尽管Handler是一种更强大的方法。
答案 1 :(得分:1)
如果此方法未在主活动线程中运行,则应更改它。怎么样?在主活动中设置一个处理程序并将其传递给线程(上图)。在handler中,您应该实现方法的GUI相关部分(即ProgressDialog
)。当您需要显示ProgressDialog
时,只需调用Handler
,然后继续处理(在这种情况下为您的循环)。与dismiss()
相同。