Java Android:无法从AsyncTask类显示对话框

Java Android:无法从AsyncTask类显示对话框,java,android,android-asynctask,progressdialog,Java,Android,Android Asynctask,Progressdialog,我已经为我的Android应用程序构建了更新类。除了下载内部异步任务类之外,它工作正常 我想在下载文件时在LoadingActivity中显示进度对话框 首先,我在onCreate方法中调用Updates类。作为参数,我发送活动上下文。然后在更新类构造函数中,我调用检查内部类(AsyncTask),它解析来自URL的JSON响应(正常工作)并调用下载(下一步更新内部类),这就是问题所在 当我试图创建ProgressDialog对象时,编译器抛出: 04-01 02:53:56.864 24393

我已经为我的Android应用程序构建了更新类。除了下载内部异步任务类之外,它工作正常

我想在下载文件时在LoadingActivity中显示进度对话框

首先,我在onCreate方法中调用Updates类。作为参数,我发送活动上下文。然后在更新类构造函数中,我调用检查内部类(AsyncTask),它解析来自URL的JSON响应(正常工作)并调用下载(下一步更新内部类),这就是问题所在

当我试图创建ProgressDialog对象时,编译器抛出:

04-01 02:53:56.864 24393-24425/pl.com.mpkostrowec.schedule E/AndroidRuntime﹕ 致命异常:AsyncTask#1
java.lang.RuntimeException:执行doInBackground()时出错
在android.os.AsyncTask$3.done(AsyncTask.java:299)
位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
位于java.util.concurrent.FutureTask.setException(FutureTask.java:219)
位于java.util.concurrent.FutureTask.run(FutureTask.java:239)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
运行(Thread.java:838)
原因:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
android.os.Handler.(Handler.java:197)
位于android.os.Handler.(Handler.java:111)
在android.app.Dialog.(Dialog.java:107)
在android.app.AlertDialog.(AlertDialog.java:114)
在android.app.AlertDialog.(AlertDialog.java:98)
在android.app.ProgressDialog.(ProgressDialog.java:77)
位于pl.com.mpkostrowiec.schedule.downloadsync.(downloadsync.java:30)
在pl.com.mpkostrowec.schedule.Updates$Check.doInBackground(Updates.java:128)
在pl.com.mpkostrowec.schedule.Updates$Check.doInBackground(Updates.java:74)
在android.os.AsyncTask$2.call(AsyncTask.java:287)
在java.util.concurrent.FutureTask.run(FutureTask.java:234)处
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
运行(Thread.java:838)
我认为ProgressDialog构造函数无法从Updates类访问上下文变量,所以我尝试将其作为参数发送,但它无法解决问题

加载活动类别:

包pl.com.mpkostrowiec.schedule;
进口
公共类加载活动扩展活动{
私人最终偏好=新偏好(此);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_加载);
首选项。保存首选项(“首选项”、“首次运行”、“1”);
//检查是否第一次运行
if(preferences.readPreference(“preferences”,“firstRun”).equals(“0”)){
System.out.println(“非首次运行”);
}否则{
//创建目录
File dir=this.getDir(“Versions”,MODE_PRIVATE);
新的更新(本);
}
}
}
更新类别:

包pl.com.mpkostrowiec.schedule;
进口
接口AfterExecuteListener{
下载后公共无效(字符串[]versionData,int类型);
}
公共类更新实现AfterExecuteListener{
私有静态版本表版本表;
私人语境;
公共静态布尔状态_current=false;
公共静态布尔状态_new=false;
私有最终整数类型_当前=0;
私有最终整数类型_NEW=1;
私有静态最终字符串URL=”http://www.mpkostrowiec.com.pl/preview/";
私有静态最终字符串GET_VERSIONS=“includes/android/VERSIONS.php”;
私有静态最终字符串RESOURCES=“RESOURCES/android/versions/”;
私有静态最终字符串扩展=“.db”;
公共更新(上下文){
this.context=上下文;
versionsTable=新的versionsTable(this.context);
新检查(键入_CURRENT).execute();
}
下载后公开最终作废(字符串[]版本数据,int类型){
//将版本数据添加到数据库
versionsTable.open();
versionsTable.add(versionData);
versionsTable.close();
//设定状态
如果(类型==当前类型){
System.out.println(“******************下载:“+类型”);
状态\当前=真;
}else if(type==type\u NEW){
System.out.println(“******************下载:“+类型”);
状态_new=true;
}
附表();
}
私人楼宇空置时间表({
如果(当前状态){
如果(新状态){
System.out.println(“成功”);
}否则{
新检查(键入新)。执行();
}
}
}
私有类检查扩展了异步任务{
公共事后执行官;
私有int型;
公共支票(整型){
this.type=type;
}
@凌驾
受保护的字符串doInBackground(字符串…Url){
字符串[]typeStr={“当前”,“新”};
//从URL获取版本
JSONObject json=null;
字符串版本=空;
HttpResponse响应;
HttpClient myClient=新的默认HttpClient()