5

在我的应用程序中,我有一个列表视图,每个项目都有一个按钮。如果用户单击按钮,我想执行一些 http 连接。所以我在 Adapter 类中使用 AsyncTask。现在的问题是没有显示进度对话框。

private class MyClass extends AsyncTask<Void, Long, Boolean> {
        private Context context;
        private ServerCall call = new ServerCall();
        private ProgressDialog progressDialog1;

        public MyClass(Context context) {
            this.context = context;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            try {
                progressDialog1 = ProgressDialog.show(context, "",
                        "Please wait...", true);
                progressDialog1.setIndeterminate(true);

            } catch (final Throwable th) {

            }

        }

        @Override
        protected void onProgressUpdate(Long... values) {

            super.onProgressUpdate(values);
        }

        @Override
        protected Boolean doInBackground(Void... params) {
            //some tasks

            return true;
        }

        @Override
        protected void onPostExecute(Boolean result) {
            if (mode.equalsIgnoreCase("History")) {

                Intent order = new Intent(context, ActicityA.class);
                order.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(order);

            } else {
                Intent order = new Intent(context, ActivityB.class);
                order.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(order);
            }

        }
    }
4

4 回答 4

0
<pre><code>
public MyClass(Context context) {
        this.context = context;
        progressDialog1=new ProgressDialog(context);
    }

@Override 受保护的无效 onPreExecute() {

    progressdialog1.setMessage("please wait while loading");
    progressdialog1.setIndeterminate(true);

    }  

于 2012-08-28T12:02:26.757 回答
0

试试这个

protected void onPreExecute() {
        dialog = new ProgressDialog(Activity.this);
        dialog.setMessage("Please wait...");
        dialog.setIndeterminate(true);
        //dialog.setCancelable(false);
        dialog.show();
    }
于 2012-08-28T06:11:25.500 回答
0
    Follow this steps 
    [0] start showing progressbar
    [1] Execute AsyncTask class
    [2] in this class one interface for post the response in main class 
    [3] Declare one interface class
    [4] get Reponse in Main Clss using interface 
    [5] dismiss Progressbar and Bind your Data 

    ex. 
    [0]

            progr.setVisibility(View.VISIBLE);
    [1]
                    MyTask task = new MyTask();
                task.setdata(new SendData() {
    [4]             @Override
                    public void GetStringResponse(String str) {
                        Log.i(General.TAG, TAG + " Overide GetString-"+str);                    
                        final String GetResponse=str;
                    // here you get response and parse it   
   [5]                               // here you can dismiss your progress bar                          
                    }
                });
                task.execute(new String[] {Newsurl[Id]});


    [2] Add interface here with Method

    SendData  objsend;

    @Override 
        protected void onPostExecute(String Result)
        {
            Log.i("**********", Result);        
            objsend.GetStringResponse(Result);  
        }

        public void setdata(SendData  sendd)
        {
            Log.i(General.TAG,TAG+"Initialise Interface object");
            objsend = sendd;
        }

 [3] interface class
     public interface SendData {    
    public  abstract void GetStringResponse(String str);
}
于 2012-08-28T06:26:19.993 回答
-1

确实该ProgressDialog.show()方法返回一个ProgressDialog对象,但最好先创建一个 ProgressDialog 对象,例如:

ProgressDialog progressDialog1 = new ProgressDialog();

接着

progressDialog1 = ProgressDialog.show(context, "",
                        "Please wait...", true);

而且,尝试通过调用它的方法来完成progressDialog1onPostExecute()dismiss()

于 2012-08-28T05:58:29.690 回答