0

以下に記述されているメソッドは、progressDialog(単なるスピナー)を表示するために使用されます。

setCancelableとsetIndeterminateをfalseに設定しました。これは、ユーザーにこのprogressDailogを閉じてほしくないためです。私の問題は、AsyncTaskのこのprogressDialog upoun完了を閉じる方法がわからないことです。助けてください、私は同じことを解決するために何時間もグーグルしていて、多くの同様の質問を見ましたが、これらのどれも私の問題を解決しませんでした!!

public class ListFriends extends ListActivity { 
         int intStat; 
         private static final int HOME = 0;
            private static final int ADD = 1;
            private static final int LOGOUT = 2;
            private static final int SETTINGS = 3;
            //private String friend;
            private String user;
            private String deviceUser;
            private String friendNameGlobal;
                        ....
                        ....

 public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
                    ........
                    ........
                    loadFromServer(user);
}
private void loadFromServer(String userReceived) {
        //buildToast("Please Wait while Updating The List");
        showProgress();
        String URL = "http://"+server+"/friendlistmob.php?userid="+userReceived;
         new DownloadXmlTask().execute(URL);
        }
  private class DownloadXmlTask extends AsyncTask<String, Void, String> {
                    .....
                    .....
  }

  protected void onPostExecute(String result) {
                    progressDialog.dismiss();//not working
 }
                   ....
                    ....

public void showProgress()
{
ProgressDialog progressDialog = new ProgressDialog(this);   
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(false);
progressDialog.setMessage("Please Wait while updating List");        
progressDialog.show();
}

}
4

3 に答える 3

2

progressDialogを次のように閉じるには、電話progressDialog.dismiss()をかける必要があります。onPostExecute

   @Override
    protected void onPostExecute(String result) {

           if (progressDialog !=null && progressDialog.isShowing())  
                progressDialog.dismiss(); //<<dismiss progressDialog here
            }
        }
于 2013-03-27T08:09:24.790 に答える
2
public class ListFriends extends ListActivity { 
ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    pd= new ProgressDialog(ListActivity.this);
    pd.setTitle("Displaying dialog");  
    new DownloadXmlTask().execute();  
  }



class DownloadXmlTask extends AsyncTask<Void,Void,Void>
 {
      protected void onPreExecute()
      {           super.onPreExecute();
                //display progressdialog.
                 pd.show();
      } 

       protected void doInBackground(Void ...params)
      {  
            //http request. do not update ui here

            return null;
      } 

      //can also show progressupdate

       protected void onPostExecute(Void result)
      {     
                super.onPostExecute(result);
                //dismiss progressdialog.
                //update ui
                pd.dismiss(); 
      } 

   }
}

http://developer.android.com/reference/android/os/AsyncTask.html

于 2013-03-27T08:09:48.120 に答える
0

メソッドのダイアログボックスを閉じますonPostExecute

             @Override
    protected void onPostExecute(Void unused) {
               progressDialog.dismiss();

               // Update your UI.
                 }
于 2013-03-27T08:09:51.887 に答える