0

我发现很多人都遇到了类似的问题,但我只是想在从 URL 中获取一些数据时显示一个对话框,然后在检索到数据后正确关闭。这是我正在尝试做的事情(这是我的 onClick() 刷新按钮的方法):

dialog.show();  
// do some work  
dialog.dismiss();

这样做你根本看不到对话框。我尝试过使用额外的线程来做到这一点,例如:

Thread t = new Thread() {
    public void run() {
        dialog.show();
    }
};

但是这样我会得到一个错误并强制关闭......
最好的方法是什么?

4

3 回答 3

0

对于此类任务,我主要建议您使用 AsyncTask。是一个很好的例子,可以帮助你。

对于这个问题,因为您正在执行与 UI 相关的任务,请使用 UI 线程。

runOnUiThread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    //Show or Hide your ProgressDialog
    }
});
于 2012-10-17T05:39:09.580 回答
0

对于您尝试实施的任务:

dialog.show();  
// do some work  
dialog.dismiss();

现在,为了实现上面,有AsyncTask的概念,这是实现线程任务的最佳方式,在 Android 中也称为Painless Threading

AsyncTask 有 4 个主要方法:

  1. onPreExecute()- 在这里您可以显示 ProgressDialog 或 ProgressBar。
  2. doInBackground()- 在这里你可以做/实现后台任务
  3. onProgressUpdate()- 在这里,您可以根据从 web 服务调用或后台任务收到的​​中间结果更新 UI
  4. onPostExecute()- 在这里您可以关闭对话框或使进度条不可见。您也可以在收到后台任务或网络服务调用的结果后执行想要执行的任务。
于 2012-10-17T05:41:09.360 回答
0

尝试使用 Activity 的 runOnUiThread 而不是使用 Thread。检查以下代码片段。runOnUiThread(new Runnable() {

            public void run() {

                    dialog = new ProgressDialog(ctContext);

                    dialog.show();
                }
            }

        });

我想这会对你有所帮助。

于 2012-10-17T05:41:34.523 回答