1

我有一个偏好活动,并且希望如果单击其中一个项目,它将启动后台工作并在前台显示一个不错的进度条,直到后台任务完成。怎么做???

编写的代码是:

 public boolean onPreferenceClick(Preference preference) {
  showProgressDialog();
  new Thread(new Runnable() {
   public void run() {
    doSomething();
    hideProgressDialog();
   }       //Runnable.run()
  }).start();
  return false;
 }
});

但是上面的代码没有显示进度对话框。并发生 ANR 错误。

谢谢。

4

2 回答 2

1

在您的活动类中添加以下代码:

// Need handler for callbacks to UI Threads
    // For background operations
    final Handler mHandler = new Handler();

    // Create Runnable for posting results
    final Runnable mUpdateDone = new Runnable() {
        public void run() {
            progDialog.hide();      
            // Do your task here what you want after the background task is finished.           
        }
    };

在 onPreferenceClick 中编写以下代码:

progDialog = ProgressDialog.show(AddPhoto.this, "", "Uploading Photo...");
            new Thread() {
                public void run() {
                    // Start your task here.....                                                        
                    mHandler.post(mUpdateDone);
                }
                }.start();

让我知道是否对您不起作用!

于 2011-05-18T14:08:45.020 回答
1

我还没有实现进度对话框(计划在今天晚些时候),但这个例子看起来不错。我打算自己使用它。我注意到它做了很多你的代码没有做的事情。

于 2011-05-18T14:11:26.667 回答