2013-12-19 2 views
0

대화 상자를 만들었습니다. 정보로 업데이트되는 xml을 부 풀립니다. 그러나 팝업 대화 상자 뒤에 진행 대화 상자가 표시됩니다. 팽창 된 xml 대화 상자 위에 progressdialog를 어떻게 표시합니까?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(); 
     } 

댓글 명성 ...