0

내 응용 프로그램에 웹 서비스를 사용하고 있습니다. callWebService() 메서드에서 데이터가 치명적입니다. ListView를 채우는 동안 ProgressDialog를 표시하고 있습니다. 해서 ProgressDialog를 취소하고 여기에 내 코드ProgressDialog 인터넷 연결이없는 경우 닫기 및 AlertDialogShow

 myProgressDialog = ProgressDialog.show(ExchangeMoneMK1Activity.this, 
        "Please wait...", "Loading...", true); 
     Thread thread = new Thread(this); 
     thread.start(); 


private boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager 
      = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null; 
} 




private Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     switch(msg.what){ 
     case 0: 

      myProgressDialog.dismiss(); 
      int resID = R.layout.list_item; 
      aa = new ExchangeRateAdapter(ExchangeMoneMK1Activity.this, resID,currencyList); 

      lw.setAdapter(aa); 
      break; 
     } 


    } 

}를 나에게 도움이되는 user.Could 누군가에 AlertDialog를 보여주기 위해 네트워크 연결을 밤은;

public void run() { 
    // TODO Auto-generated method stub 

    try { 
     if(isNetworkAvailable()) 
     callWebService(); 
     handler.sendEmptyMessage(0); 
    } 


    catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (XmlPullParserException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ParserConfigurationException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

아직에 AlertDialog가없는 진행 표시 줄이 내가

누군가가 나를 도울 수 AndroidManifest를의 특권에 넣어 가지고 를 기각되지 않은 인터넷 연결이없는 경우 때문에?

답변

0

try catch를 사용하여 마지막으로 handler.sendEmptyMessage (0)를 사용하십시오. finnaly ...

나는 당신이 callWebService() .....에서 catch하고 handler.sendEmptyMessage (0)에 도달하지 못하도록 모든 excption과 흐름 점프가 있다고 생각합니다. line ........

0

AsyncTask를 사용하십시오. 훨씬 더 간단해질 것입니다. 일반적인 패턴은 다음과 같습니다. 사소한 컴파일 오류가있을 수 있지만, 이것은 당신에게 아이디어를 줄 것입니다.

class MyTask extends AsyncTask<Void, Void, ArrayList> { 
    protected Void doInBackground(Void... params) { 
     ArrayList currencyList; 
     if(isNetworkAvailable()) 
      currencyList = callWebService(); 
     return currencyList; 
    } 
    void onPreExecute() { 
     myProgressDialog = ProgressDialog.show(ExchangeMoneMK1Activity.this, 
       "Please wait...", "Loading...", true); 
    } 
    void onPostExecute(ArrayList currencyList) { 
     myProgressDialog.dismiss(); 
     if (currencyList == null) { 
      //Handle error 
      return; 
     } 
     int resID = R.layout.list_item; 
     aa = new ExchangeRateAdapter(ExchangeMoneMK1Activity.this, resID,currencyList); 

     lw.setAdapter(aa); 
    } 
}