Java 在长时间运行的异步任务运行时显示微调器对话框

Java 在长时间运行的异步任务运行时显示微调器对话框,java,android,android-fragments,android-asynctask,android-spinner,Java,Android,Android Fragments,Android Asynctask,Android Spinner,我正在从AsyncTask执行远程http调用,我想显示一个微调器进度对话框。 我这样做: public class LongRunningTask extends AsyncTask<Object, Void, Void> { Context ctx; ProgressDialog prog; public LongRunningTask(){} public LongRunningTask(Context ctx) { this

我正在从AsyncTask执行远程http调用,我想显示一个微调器进度对话框。
我这样做:

public class LongRunningTask extends AsyncTask<Object, Void, Void> {

    Context ctx;
    ProgressDialog prog;
    public LongRunningTask(){}

    public LongRunningTask(Context ctx) {
        this.ctx = ctx;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        prog.dismiss();
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        prog = new ProgressDialog(ctx);
        prog.setTitle("bla");
        prog.setMessage("BLABLA");
        prog.setIndeterminate(false);
        prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        prog.show();
       }
....
}
我的应用程序崩溃(没有任何堆栈跟踪…)

如何实现这一点?

您的
LongRunningTask
没有将上下文对象作为参数的构造函数。不仅仅是破坏你的代码是不够的compiling@Blackbelt:我只粘贴了预执行/后执行,因为构造函数只粘贴了
this.ctx=ctx
我认为不允许您从线程运行异步任务!=Ui线程。
AsyncTask
应该在
Ui线程上创建,您可以在另一个线程上创建。@Blackbelt:即使我的代码不是知道android的人会做的(我是新手),http调用也可以工作。
new Thread(new Runnable() {
    @Override
    public void run() {
        new LongRunningTask(getActivity()).execute();   
    }
}).run();