2011-04-28 84 views
0

我有一個加載進度對話框的第二個活動,我在我的android項目後按下按鈕,但pogressdialog沒有加載它。 你能幫我嗎? 感謝和抱歉我的英語!將不會在android中顯示progressDialog

的代碼是...

ent enviar.setOnClickListener(new OnClickListener() 
{ 
    public void onClick(View v){ 
     calcularFecha(horaIn,horaFi); 
     Runtime runtime = Runtime.getRuntime(); 
     Log.d("PRUEBA", "COMENZAMOS LA PARTE DE LA CONEXION"); 
     //getApplicationContext() 
     progressDialog = ProgressDialog.show(programacion.this, "", "Loading..."); 

     new Thread() { 
      public void run() { 
       try{ 
        sleep(10000); 
       } catch (Exception e) { 
        Log.d("PRUEBA", e.getMessage()); 
       } 
       // dismiss the progress dialog 
       progressDialog.dismiss(); 
      } 
     }.start(); 

回答

1

你應該管理(顯示/刪除)的進展從UI線程,而不是您的自定義線程內對話框。

該解決方案適用於我,如果我有我的當前活動中定義的progressDialog成員:顯示10秒

enviar.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     Log.d("PRUEBA", "COMENZAMOS LA PARTE DE LA CONEXION"); 
     progressDialog = ProgressDialog.show(programacion.this, "", "Loading..."); 
     calcularFecha(horaIn, horaFi); 
     new Thread() 
     { 
      public void run() 
      { 
       try 
       { 
        sleep(10000); 
       } 
       catch (Exception e) 
       { 
        Log.d("PRUEBA", e.getMessage()); 
       } 
       progressDialog.dismiss(); 
      } 
     }.start(); 
    } 
}); 

進度對話框,然後它就會被解僱。

你有什麼要確保是:

  1. 你是在programacion 活動內(即在 ProgressDialog.show法規定)。
  2. calcularFecha(horaIn, horaFi); 不會引發任何異常。
+0

沒有什麼工作! 我已經看到,如果我把簡單的吐司也不顯示它! :-( enviar.setOnClickListener(新OnClickListener() \t { \t \t \t \t公共無效的onClick(視圖v){ \t \t \t \t \t \t \t \t \t \t calcularFecha(horaIn,horaFi); \t \t \t \t \t \t日誌。d(「PRUEBA」,「COMENZAMOS LA PARTE DE LA CONEXION」); Toast.makeText(getApplicationContext(),「WOL + CONEXTION」,Toast.LENGTH_SHORT).show(); \t \t Toast.makeText(programacion.this,「WOL + CONEXTION」,Toast.LENGTH_SHORT).show(); \t \t \t // getApplicationContext() \t \t \t Log.d( 「PRUEBA」, 「MOSTRAMOS PROGRESS」); ........... – mmm286 2011-04-28 13:52:27

+0

我已經分享了一個很好的示例代碼。請看看,如果你仍然有問題,請分享你的LogCat堆棧跟蹤。謝謝! – rekaszeru 2011-04-28 14:33:13

+0

Thanks.Now它的工作原理。我不知道會發生什麼。我評論下我有的代碼的下一行。這些線是:\t \t \t \t如果(pruebaPing( 「221.221.221.2」)){ \t \t \t \t \t Log.d( 「PRUEBA」, 「無llega despues德comprobar EL底漆平乾草闕mandar PAQUETE。」) ; \t \t \t \t \t \t \t \t \t新tareaWOL()執行(); \t \t \t \t \t \t \t \t}否則{ \t \t \t \t \t dialogin.dismiss(); \t \t \t \t \t new tareaPing()。execute(); \t \t \t}。我不明白爲什麼這些線路不工作??????? – mmm286 2011-04-28 15:17:37

0
ProgressDialog progressDialog= new ProgressDialog(activity.this); 
progressDialog.setIndeterminate(true); 
progressDialog.setCancelable(false); 
progressDialog.setMessage("Please Wait"); 
progressDialog.show(); 

if(progressDialog!=null) 
{ 
    progressDialog.dismiss(); 
    System.out.println("dialog dismissed"); 
} 

試試這個

+0

沒有用!我看到,如果我把簡單的敬酒也不要顯示它! :-(enviar.setOnClickListener(new OnClickListener(){public void onClick(View v){calcularFecha(horaIn,horaFi); Log.d(「PRUEBA」,「COMENZAMOS LA PARTE DE LA CONEXION」); Toast.makeText(getApplicationContext (),「WOL + CONEXTION」,Toast.LENGTH_SHORT).show(); Toast.makeText(programacion.this,「WOL + CONEXTION」,Toast.LENGTH_SHORT).show(); // getApplicationContext()Log.d 「PRUEBA」,「MOSTRAMOS PROGRESS」); – mmm286 2011-04-28 14:15:20

0

試試這個,如果你的作品..

ProgressDialog更新=新ProgressDialog(activity.this);

update.setTitle(getResources()。getString(R.string.app_name)); update.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); update.setCancelable(true); update.setMax(100); update.show();

    Thread background = new Thread (new Runnable() { 
          public void run() { 
           try { 
            // enter the code to be run while displaying the progressbar. 
            // 
            // This example is just going to increment the progress bar: 
            // So keep running until the progress value reaches maximum value 
            while (update.getProgress()<= update.getMax()) { 
             // wait 500ms between each update 
             Thread.sleep(500); 

             // active the update handler 
             progressHandler.sendMessage(progressHandler.obtainMessage()); 
            } 

           } catch (java.lang.InterruptedException e) { 
            // if something fails do something smart 
           } 
          } 
         }); 

         // start the background thread 
         background.start(); 
         if(update.getProgress()== 100) 
          { 
           update.dismiss(); 
          } 
+0

沒有什麼作用!我已經看到,如果我把簡單的吐司也不顯示它!:-(enviar.setOnClickListener(new OnClickListener(){public void onClick(View v ){calcularFecha(horaIn,horaFi); Log.d(「PRUEBA」,「COMENZAMOS LA PARTE DE LA CONEXION」); Toast.makeText(getApplicationContext(),「WOL + CONEXTION」,Toast.LENGTH_SHORT).show(); Toast.makeText(programacion.this,「WOL + CONEXTION」,Toast.LENGTH_SHORT).show(); // getApplicationContext()Log.d(「PRUEBA」,「MOSTRAMOS PROGRESS」); – mmm286 2011-04-28 14:15:07

+0

嘗試將clicklistener放在這樣...按鈕b1 = (按鈕)findViewById(R.id.button1); \t b1.setOnClickListener(新View.OnClickListener(){ \t \t \t @Override \t \t \t公共無效的onClick(視圖v){ \t \t \t \t // TODO自動生成方法存根 \t \t \t \t Toast.makeText(Classname.this,「Hello」,Toast.LENGTH_SHORT).show(); \t \t \t} \t \t \t \t \t}); – 2011-04-29 05:39:28

0

我覺得你ProgressDialog連接到錯誤Activity(如Context)。

你沒有張貼滿級的源代碼,但這個問題可能是programacion.this

ProgressDialog.show(programacion.this, "", "Loading...");