2012-03-13 17 views
1

AsyncTaskを使ってウェブサイトからいくつかのデータを解析しようとしています。プログラムからウェブサイトのURLを取得し、ダウンロードしたデータをuiに更新してprogressdialog(回転ホイール)を表示したいので、 (UPDATE):とにかく今の変数が、プログラムの強制終了との[OK]をk個AsyncTaskとJSOUP Parsing

private class backgroundDATA extends AsyncTask<String, Void, Void> { 

    ProgressDialog dialog; 
    Document doc; 

    @Override 
    protected void onPreExecute() { 

     dialog = dialog.show(Result.this, " ", 
       " Loading. Please wait ... ", true); 
    } 

    @Override 
    protected Void doInBackground(String... params) { 

     try { 

      doc = Jsoup.connect(params[0]).get(); 


     } catch (IOException e){ 
      e.printStackTrace(); 
     } 

     return null; 
    } 




protected void onPostExecute(Void result) { 


     Elements maine; 
     Elements titleJSOUP; 
     Elements recipeJSOUP; 
     Elements instructionsJSOUP; 

     String recipE; 

     maine = doc.select("div#recipeContent"); 

     titleJSOUP = doc.select("title"); 

     recipeJSOUP = maine.select("ul.recipe"); 

     instructionsJSOUP = maine.select("p.instructions"); 



     recipE = recipeJSOUP.toString(); 


     drinkNameText.setText("THE " 
       + Jsoup.parse(titleJSOUP.toString()).text() 
         ); 



     dontListenText.setText(Jsoup.parse(titleJSOUP.toString()).text() 
         ); 

     recipeText.setText(prepareDRINK(recipE)); 

     instructionsText.setText(Jsoup.parse(instructionsJSOUP.toString()) 
       .text()); 

     dialog.dismiss(); 


    } 

}

+0

onPostExecute中に 'backgroundDATA'のメンバーにアクセスできませんか?メイン、ドキュメント、imgURLなど? – Tim

+0

これは変数として解決できないことを私に示しています。これを外して宣言すると、asynctaskはプログラムの強制終了を行います – mrp1nk

+0

解決できない 'main'などのメンバーは本当ですか?あなたの 'AsyncTask'があなたの' Activity'の内部クラスとして定義されていない限り解決できないのは、 'drinkNameText'のようなUI要素でしょう。 – Squonk

答えて

0

まあ、これは

@Override 
protected void onPreExecute() { 

    dialog = dialog.show(Result.this, " ", 
      " Loading. Please wait ... ", true); 
} 
...スタートのため NullPointerExceptionを引き起こすことが起こっているような

dialognullとなるので、dialog.show(...)に電話をかけることはできません。

代わりにstatic ProgressDialog.show(...)メソッドを呼び出します。

+0

部分的に問題が解決しました - それが消えてアプリが強制終了につながると、それ以降も、私は日食でlogcatを見ることができません – mrp1nk