2011-12-10 3 views
0

누군가 내 코드가 작동하지 않는 이유를 말해 줄 수 있습니까? ProgressDialog를 표시하려고하지만 아래 코드의 문제점은 ConsultaComercio 함수를 처리하는 데 많은 시간을 소비 했더라도 나타나지 않는다는 것입니다. 나는 많은 예제를 보았지만 내가 뭘 잘못하고 있는지 이해하지 못합니다. 도와 주셔서 감사합니다. 미리 감사드립니다.Android ProgressDialog가 작동하지 않습니다.

pd = ProgressDialog.show(this, "", "Loading...", true); 
Toast.makeText(getApplicationContext(), "Cargando.... " + String.valueOf(numero_prueba), Toast.LENGTH_SHORT).show(); 

new Thread() { 
    public void run() { 
     try{ 
      // Do some Fake-Work 
      ConsultaComercio(); 
      numero_prueba=60000; 
     } catch (Exception e) { } 
     // Dismiss the Dialog 
     pd.dismiss(); 
    } 
}.start(); 

답변

1

모든 스레드에서 UI를 업데이트 할 수 없습니다. AsyncTask이어야합니다. 당신의에서 onCreate에서

1

() 이렇게

Handler handler=new Handler() 
{ 

    public void handleMessage(Message msg) 
{ 
    if(pd.isShowing()) 
{ 
    pd.dismiss(); 
} 
}; 

이 같은 스레드를 변경,

Toast.makeText (getApplicationContext(), "Cargando ...."+ 한 String.valueOf (numero_prueba), Toast.LENGTH_SHORT) .show();

 new Thread() { 
      public void run() { 
        try{ 
          // Do some Fake-Work 
        ConsultaComercio(); 
        numero_prueba=60000; 
        } catch (Exception e) { } 
        // Dismiss the Dialog 
       handler.sendEmptyMessage(0); 
      } 
     }.start(); 
관련 문제