[英]Android: Progress Dialog error in AysncTask
我有一些代碼在AsyncTask中進行一些處理,而這正在運行我想顯示一個進度對話框。 在各個方面,我希望更新消息,但我遇到了一些麻煩。 以下是我到目前為止的情況:
class ShowDialogAsyncTask extends AsyncTask<Void, String, Void>{
private ProgressDialog progressSpinner;
@Override
protected void onPreExecute() {
ProgressDialog progressSpinner = new ProgressDialog(MainActivity.this);
progressSpinner.setTitle("File Download");
progressSpinner.setMessage("Connecting to Internet");
progressSpinner.show();
}
@Override
protected Void doInBackground(Void... params)
{
Log.v("doInBackground","1");
try {
Log.v("doInBackground","2");
onProgressUpdate("Downloading File");
//do some stuff
} catch (IOException e) {
result = "Error";
}
onProgressUpdate("Complete!");
SystemClock.sleep(300);
return null;
}
protected void onProgressUpdate(String... values)
{
Log.e("onProgressUpdate",values[0]);
try{
progressSpinner.setMessage(values[0]);
}catch(Exception e){Log.e("onProgressUpdate","Error!");}
Log.e("onProgressUpdate","Success!");
}
@Override
protected void onPostExecute(Void result)
{
progressSpinner.dismiss();
vf.showNext();
}
}
我希望更新消息的代碼不起作用,它只是拋出一個異常。 然后當我嘗試關閉進度對話框時整個事情崩潰了。
我對Android開發很新,所以我非常感謝任何指針。
Logcat條目所有都有點梨形。
03-22 22:59:30.189: W/dalvikvm(8133): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
03-22 22:59:30.189: E/AndroidRuntime(8133): Uncaught handler: thread main exiting due to uncaught exception
03-22 22:59:30.195: E/AndroidRuntime(8133): java.lang.NullPointerException
--UPDATE--
似乎我的問題是我在宣布進度對話框的地方。 我最終發現我可以在新創建的構造函數中聲明進度對話框
progressSpinner = new ProgressDialog(mContext);
然后它將允許AsyncTask類訪問的所有其他方法更新消息。
問題可能在於您在創建ProgressDialog
時如何引用MainActivity
。 將公共構造函數添加到AsyncTask
和名為mContext
的類字段:
public ShowDialogAsyncTask(Context c){
mContext = c;
}
在創建類的對象時,在MainActivity
傳遞this
:
ShowDialogAsyncTask task = new ShowDialogAsyncTask(this);
在AsyncTask
,使用該上下文創建ProgressDialog
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.