Android: невозможно указать тип возвращаемого списка <String>для AsyncTask: doInBackground - PullRequest
3 голосов
/ 26 февраля 2011

У меня есть следующий блок кода на основе асинхронной задачи. Я пытаюсь вернуть переменную List через return LoadFeed () и тип возвращаемого значения doInBackground - String. Если я изменю тип возврата doInBackground с String на List тогда я получаю ошибку

"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);

   }
}

Ответы [ 2 ]

16 голосов
/ 26 февраля 2011

Измените определение вашего класса на:

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

Это заставит объявление doInBackground стать:

protected List<String> doInBackground(String... arg);
1 голос
/ 26 февраля 2011

Во-первых, вы действительно должны добавить @Override аннотации к вашим onPreExecute(), doInBackground() и onPostExecute() методам.На AsyncTask это очень важно, чтобы помочь вам отслеживать все типы данных.

Затем, если вы хотите, чтобы doInBackground() вернул List<String>, вам нужно изменить оба параметра в doInBackground()и в вашей декларации AsyncTask (третий тип данных необходимо будет изменить с String на List<String>), чтобы согласиться с уже внесенными вами изменениями в onPostExecute().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...