2011-02-26 7 views
3

私はasynctaskに基づいて以下のコードブロックを持っています。 返り値LoadFeed()によってリスト変数を返そうとしています とdoInBackgroundの戻り値の型はStringです。私はその後、 の一覧を表示する文字列からdoInBackgroundの戻り値の型を変更する た場合、私はAndroid:リストを指定できません<String> AsyncTaskの戻り値の型:doInBackground

"The return type is incompatible with AsyncTask<String,Void,String>.doInBackground(String[])" 

がどのように私はこのエラーを修正すればよいのエラーを取得しますか?

private class DispData extends AsyncTask<String, Void, String> { 
    private final ProgressDialog dialog = new ProgressDialog(MessageList.this); 
    // can use UI thread here 
    protected void onPreExecute() { 
     dialog.setMessage("Fetching scores..."); 
     dialog.show(); 
    } 


    // automatically done on worker thread (separate from UI thread) 
    protected String doInBackground(final String... args) { 
     return loadFeed(); 

    } 


    // can use UI thread here 
    protected void onPostExecute(final List<String> result) { 
     if (dialog.isShowing()) { 
     dialog.dismiss(); 
     } 
    adapter = 
      new ArrayAdapter<String>(MessageList.this,R.layout.row,result); 
    MessageList.this.setListAdapter(adapter); 

    } 
} 

答えて

16
にあなたのクラス定義を変更し

:これになるdoInBackground宣言を強制します

class DispData extends AsyncTask<String, Object, List<String>> 

protected List<String> doInBackground(String... arg); 
+0

チップをありがとう! – sammydude

1

まず 助けてください

おかげで、あなたが本当にあなたのonPreExecute()doInBackground()、およびonPostExecute()方法に@Override注釈を追加する必要があります。 AsyncTaskでは、すべてのデータタイプを追跡するのに役立ちます。

あなたはdoInBackground()List<String>を返すようにしたい場合はその後、あなたはあなたの変更と一緒に行くために、(第3データ型がList<String>Stringから変更する必要があります)doInBackground()にし、あなたのAsyncTask宣言の両方でそれを変更する必要があります既にonPostExecute()に作られています。

+0

は@overridesを追加しました。両方の場所でretunデータ型を変更しました。まだ '強制終了'エラーが表示されます。 AsyncTask宣言の3つのパラメータの意味は何ですか?私がfurthurをデバッグする前に、これを知る必要があると思います。 TIA。 – sammydude

+0

申し訳ありません。できます! LoadFeedの手順にはいくつか問題があります。それをデバッグします。 :-) – sammydude

+0

ありがとう!完璧に働いた! :-) – sammydude

関連する問題