2013-12-19 39 views
0

我已经创建了对话框,它膨胀了xml,它获得了更新的信息。但进度对话框显示在弹出的对话框后面。如何在对话框的顶部显示进度对话框,其中包含膨胀的xml。progressdialog进入对话框

public class MainActivity extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 


      dialog(); 
     } 


     public class loadasync extends AsyncTask<Void, Void, JSONObject> { 

      ProgressDialog progressDialog ; 
      @Override 
      protected JSONObject doInBackground(Void... params) { 
        } 
      @Override 
      protected void onPreExecute() { 
       // TODO Auto-generated method stub 

       super.onPreExecute(); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
          progressDialog = new ProgressDialog(MainActivity.this); 
         progressDialog.setMessage("loading"); 
         progressDialog.setCanceledOnTouchOutside(false); 
         progressDialog.show(); 
        } 
       });   
      } 

      @Override 
      protected void onPostExecute(JSONObject result) { 


       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 


         progressDialog.dismiss(); 
        }  
       }); 
      } 
     } 



     public void dialog() { 

      dialog = new Dialog(MainActivity.this); 
      dialog.setContentView(R.layout.dialogxml); 

     loadasync loadasyncdata=new loadasync(); 
     loadasyncdata.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 


      dialog.show(); 


     } 

回答

1

我看不到你在代码中使用setProgressStyle()。即:

progessDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 

例如。

因此,在你的代码尝试以下操作:

public void run() { 
        progressDialog = new ProgressDialog(MainActivity.this); 
        progressDialog.setMessage("loading"); 
        progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
        progressDialog.setCanceledOnTouchOutside(false); 
        progressDialog.show(); 
       } 
0

要考虑的事情:OnPostExecute和onPreExecute是在UI线程上都运行,这样你就可以删除runOnUIThread的东西,只是做

 protected void onPreExecute() { 
      progressDialog = new ProgressDialog(MainActivity.this); 
      progressDialog.setMessage("loading"); 
      progressDialog.setCanceledOnTouchOutside(false); 
      progressDialog.show(); 
     } 

分别在onPostExecute

 protected void onPostExecute(JSONObject result) { 
      progressDialog.dismiss(); 
     } 

也许应该是一个评论,但信誉...