2016-04-19 16 views
0

これで、データがインターネットからダウンロードされ、UIに適用されていることを示す進捗ダイアログを表示しようとしています。私のasynctaskは正常に動作しており、すべてのステップを実行していますが、ダイアログを表示することはありません。私はここで間違って何をしたのかわからないし、私はかなり壁に当たった。私は、非同期タスクを新しい実行可能スレッドに入れて、それを実行しようとしましたが、ダイアログも表示されませんでした。私はこのような非同期タスクを呼び出していますasynctask呼び出し中に進捗ダイアログが表示されない

new runningMan().execute(); 

ここでは実行しようとしているコードです。

private class runningMan extends AsyncTask<Void, Void, Integer> 
{ 

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

     Log.d("Runningman: ", "Started running"); 
     //this method will be running on UI thread 
     progress = ProgressDialog.show(PromotionMain.this, "Loading", "PleaseWait", true); 

    } 
    @Override 
    protected Integer doInBackground(Void... params) { 
     //parse the JSON string 
     JSONParser jp = new JSONParser(); 
     try { 
      Log.d(username , password); 
      jp.parsesData(promos, myJson, pictureArray, pathArray, labelArray); 
      Log.d("Runningman: ", "Finished parsing"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return 1; 
    } 
    @Override 
    protected void onPostExecute(Integer result) { 
     super.onPostExecute(result); 
     ArrayList<ListItem> listData = getListData(); 
     fillListView(listData); 
     Log.d("Runningman: ", "Finished runing"); 
     //this method will be running on UI thread 
     progress.dismiss(); 
    } 

} 

ありがとうございます。

+0

はいI参照完成解析を実行開始し、実行が終了します。 – MNM

答えて

1

「super.onPreExecute();」を呼び出します。と "super.onPostExecute(result);"進捗ダイアログのコードの後に​​。または、より良い、それらを取り除く(あなたがそれらを呼び出す理由がない場合)。

は、次のコードを使用します。

private class runningMan extends AsyncTask<Void, Void, Integer> 
{ 

    @Override 
    protected void onPreExecute() { 

     Log.d("Runningman: ", "Started running"); 
     //this method will be running on UI thread 
     progress = ProgressDialog.show(PromotionMain.this, "Loading", "PleaseWait", true); 
     super.onPreExecute(); 

    } 
    @Override 
    protected Integer doInBackground(Void... params) { 
     //parse the JSON string 
     JSONParser jp = new JSONParser(); 
     try { 
      Log.d(username , password); 
      jp.parsesData(promos, myJson, pictureArray, pathArray, labelArray); 
      Log.d("Runningman: ", "Finished parsing"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return 1; 
    } 
    @Override 
    protected void onPostExecute(Integer result) { 
     ArrayList<ListItem> listData = getListData(); 
     fillListView(listData); 
     Log.d("Runningman: ", "Finished runing"); 
     //this method will be running on UI thread 
     progress.dismiss(); 
     super.onPostExecute(result); 
    } 

} 
+0

私はそれを変更しますが、まだ表示されていません。それは瞬きのために表示されるかもしれないが、私はそれがすべきだと思うように表示されていない。 uiが正しく構築されるまで表示されますか? – MNM

+0

この変更後、進捗ダイアログが確実に機能します。ダイアログが非常に短時間表示された場合、これはdoInBackground()メソッドや、 "progress.dismiss();"の前の他のタスクを意味します。非常に速く終了します。長いタスクの場合は、進行状況ダイアログがより長く表示されます。 –

+0

ありがとうございます私はこれを実行するのにもう少し時間がかかる何かにこれを使用しようとしていることを理解していると思います。 – MNM

関連する問題