ProgressBar Spinner for Async Task

时间:2013-07-02 18:42:52

标签: android android-progressbar

这是我简单的AsyncTask:

class MyTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {

        String page = null;
        try {
            page = new Communicator().executeHttpGet(params[0]);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return page;
    }

如何向此处添加一个显示简单微调器的进度条?每次我尝试代码中断或参数都放错了地方。

编辑:

class MyTask extends AsyncTask<String, Void, String> {

    ProgressDialog myPd_ring = null;

    @Override
    protected void onPreExecute() {


        myPd_ring.show();

    }
    @Override
    protected String doInBackground(String... params) {

        String page = null;
        try {
            page = new Communicator().executeHttpGet(params[0]);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return page;

    }

    @Override
    protected void onPostExecute(String result) {
        myPd_ring.dismiss();        
        super.onPostExecute(result);
    }

}

试过这仍然行不通!事实上,应用程序现在甚至没有响应标准输入! 谢谢!

2 个答案:

答案 0 :(得分:1)

@Override
        protected void onPreExecute() {

            myPd_ring  = new ProgressDialog (YourActivityName.this);
            myPd_ring.setMessage("Forza Roma");
            myPd_ring.show();

        }

同时将课程改为

class MyTask extends AsyncTask<String, Integer, String>

并且在onPostExecute函数上你应该首先调用super函数:

 @Override
    protected void onPostExecute(String result) {        
        super.onPostExecute(result);
        myPd_ring.dismiss();
}

此外,对于您的业务逻辑,您应该在onPostExecute而不是doInBackground上调用新的AsyncTask

答案 1 :(得分:0)

覆盖方法onPreExecute()

在该方法中创建一个ProgressDialog并显示它。 您可以在方法onPostExecute()中忽略您应该覆盖的ProgressDialog。详细了解AsyncTask here

小心使用AsyncTasks,它有一些隐藏的陷阱。查看this article了解相关信息。