1

我在尝试将 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();
4

2 回答 2

2

您只能在 UI 线程(这是您扩展 Activity 的主类)中显示对话框。为了能够做到这一点,您可以编写一个Handler并使用它来将消息从非 UI 线程发送到 UI 线程。Android在他们的 ProgressDialog 示例中有一个这样的例子。查看他们在“Example ProgressDialog with a second thread”下的代码片段。

您也可以按照您提供的链接的答案中所写的相同方法,尽管 Handler 是一种更强大的方法。

于 2011-03-20T01:26:33.787 回答
1

如果此方法未在您的 Main Activity 线程中运行,您应该更改它。如何?在主活动中设置一个 Handler 并将其传递给线程(上图)。在处理程序中,您应该实现方法的 GUI 相关部分(即ProgressDialog)。当您需要显示时ProgressDialog,只需调用您的Handlerand 而不是继续处理(在这种情况下是您的循环)。对于dismiss().

于 2011-03-20T01:22:25.600 回答