2016-09-14 20 views
0

我試圖從AsyncTask顯示ProgressDialog,但沒有顯示...如果我刪除PostExecute的'dialog.dismiss()',這個任務就像一個'post()',它顯示任務結束時的對話框。我越來越瘋狂了!無法顯示從AsynkTask的ProgressDialog

private static class Experimento extends AsyncTask<String, Void, String> 
{ 
    ProgressDialog dialog; 

    @Override 
    protected void onPreExecute() 
    { 
     super.onPreExecute(); 

     dialog = new ProgressDialog(Config.getCurrent_Context()); 
     dialog.setMessage("Cargando..."); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 

    protected String doInBackground(String... params) 
    { 
     try 
     {  
      Config.getCurrent_Context().runOnUiThread(new Runnable() 
      { 
       @Override 
       public void run() 
       { 
        try 
        { 
         //Work, work, work... 
        } 
        catch(Exception e) 
        { 
         e.printStackTrace(); 
        } 
       } 
      }); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    protected void onPostExecute(String result) 
    { 
     super.onPostExecute(result); 

     dialog.dismiss(); 
    } 
} 

現在試圖給活動的構造函數,但仍然沒有工作...

private static ProgressDialog dialog; 

    public Experimento(Activity act) 
    { 
     Log.w("Experimento", "Experimento"); 
     dialog = new ProgressDialog(act); 
     dialog.setMessage("Cargando..."); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 

    @Override 
    protected void onPreExecute() 
    { 
     super.onPreExecute(); 
    } 
+0

你的任務已經結束對話框顯示之前。這太短了看不到。你爲什麼要開始一個調用來執行doInBackground中的所有ui線程?沒有意義。 – greenapps

+0

嘗試從doInBackground()中的runOnUiThread中刪除代碼,並直接在doInBackground() – Meenaxi

+0

中寫入代碼,該任務的作用類似於'post()'這意味着什麼? –

回答

0

您應該刪除setIntermidiate(真);

+0

刪除,不工作= / –

0

試試這個,它爲我工作:

Override 
    protected void onPreExecute() 
    { 

     dialog = new ProgressDialog(Config.getCurrent_Context()); 
     dialog.setMessage("Cargando..."); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 

    protected String doInBackground(String... params) 
    { 
    String result = " "; 
     try 
     {  
      Config.getCurrent_Context().runOnUiThread(new Runnable() 
      { 
       @Override 
       public void run() 
       { 
        try 
        { 
         //Work, work, work... 
        } 
        catch(Exception e) 
        { 
         e.printStackTrace(); 
        } 
       } 
      }); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return result; 
    } 

    protected void onPostExecute(String result) 
    { 

     dialog.dismiss(); 
    }