0

私は自分のアプリケーションに Web サービスを使用しています。メソッド callWebService() でデータが太っています。ListView の作成中に ProgressDialog を表示しています。ユーザー.誰かが私を助けてくれませんか?ここに私のコードがあります

     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;
        }


    }

};

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();
    }

}

インターネット接続がない場合、プログレスバーが消えないため、まだアラートダイアログはありません AndroidManifest 特権を設定しました

誰か助けてくれませんか?

4

2 に答える 2

0

最後に、trycatchおよびputhandler.sendEmptyMessage(0);でも使用します。ついに...

私が思うに、あなたはなんらかの例外を受け取り、あなたのフローはcallWebService().....からキャッチするためにジャンプし、handler.sendEmptyMessage(0);に到達していません。ライン........

于 2012-06-02T17:11:46.710 に答える
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);
    }
}
于 2012-06-02T17:14:47.593 に答える