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

代わりにこれを試してください」

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 に答える
0
<pre><code>
public MyClass(Context context) {
        this.context = context;
        progressDialog1=new ProgressDialog(context);
    }

@Override protected void onPreExecute(){

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

    }  

于 2012-08-28T12:02:26.757 に答える
-1

そのProgressDialog.show()メソッドはオブジェクトを返すのは事実ですProgressDialogが、最初に次のようなProgressDialogのオブジェクトを作成することをお勧めします。

ProgressDialog progressDialog1 = new ProgressDialog();

その後

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

また、そのメソッドを呼び出して、 progressDialog1inを終了してみてください。onPostExecute()dismiss()

于 2012-08-28T05:58:29.690 に答える