2016-08-17 6 views
1

Как виден из Google's Android Documentation мы видим, что`doInBackground()` типа void не принимается `AsyncTask`?

Params, типа параметров, посланных на задание на выполнение.

Прогресс, тип единиц прогресса, опубликованных во время вычисления фона.

Результат, тип результата вычисления фона.

также упоминается в this отличный ответ.

Но тогда, почему имея Void как тип результата приводит к следующему предостережению по Android Studio на doInBackground линии:

doInBackground(String...)' in '(..)MainActivity.myTask' clashes with 'doInBackground(Params...)' in 'android.os.AsyncTask'; attempting to use incompatible return type 

Это как AsyncTask объявлено:

private class myTask extends AsyncTask<String,Void,Void> { 
    @Override 
    protected void doInBackground(String... url) { 
     //do stuff with url[0] 
    } 

    @Override 
    protected void onPostExecute() { 
     //more stuff 
    } 
} 

Для сравнения, это работает нормально:

private class myTask extends AsyncTask<String,Void,String> { 
    @Override 
    protected String doInBackground(String... url) { 
     //do stuff with url[0] 
     return "hi"; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     //more stuff 
    } 
} 

Примечание. Существуют различные вопросы по этой теме, но большинство из них просто испортило параметры или параметры AsyncTask и возвращает значения в классе.

ответ

3

попробовать этот код

private class myTask extends AsyncTask<String,Void,Void> { 
    @Override 
    protected Void doInBackground(String... url) { 
      //do stuff with url[0] 
     return null; 

    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     //more stuff 
    } 
} 
+0

О, я не знаю, что использование 'Void' проходящее на нуль, спасибо! – PHPirate

+0

приветствуются –

Смежные вопросы