2015-09-03 52 views
0

我在doInBackground方法的Asynctask类中的值'return'中遇到问题。我得到一个错误,关于'在下面的代码中缺少return语句。Android Asynctask返回问题

'公共类ForecastNetwork扩展的AsyncTask {

public final String TAG = ForecastNetwork.class.getSimpleName(); 

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

     HttpURLConnection urlConnection = null; 
     BufferedReader reader = null; 

//将包含原始JSON响应作为一个字符串。 String forecastJsonStr = null;

 try { 
      // Construct the URL for the OpenWeatherMap query 
      // Possible parameters are avaiable at OWM's forecast API page, at 
      // http://openweathermap.org/API#forecast 
      URL url = new URL("http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7"); 

      // Create the request to OpenWeatherMap, and open the connection 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.connect(); 

      // Read the input stream into a String 
      InputStream inputStream = urlConnection.getInputStream(); 
      StringBuffer buffer = new StringBuffer(); 
      if (inputStream == null) { 
       // Nothing to do. 
       return null; 
      } 
      reader = new BufferedReader(new InputStreamReader(inputStream)); 

      String line; 
      while ((line = reader.readLine()) != null) { 
       // Since it's JSON, adding a newline isn't necessary (it won't affect parsing) 
       // But it does make debugging a *lot* easier if you print out the completed 
       // buffer for debugging. 
       buffer.append(line + "\n"); 
      } 

      if (buffer.length() == 0) { 
       // Stream was empty. No point in parsing. 
       return null; 
      } 
      forecastJsonStr = buffer.toString(); 
     } catch (IOException e) { 
      Log.e(TAG, "Error ", e); 
      // If the code didn't successfully get the weather data, there's no point in attemping 
      // to parse it. 
      return null; 
     } finally { 
      if (urlConnection != null) { 
       urlConnection.disconnect(); 
      } 
      if (reader != null) { 
       try { 
        reader.close(); 
       } catch (final IOException e) { 
        Log.e(TAG, "Error closing stream", e); 
       } 
      } 
     } 


    }` 

我最后应该返回什么?

回答

0

我以为你忘了处理结果返回

forecastJsonStr = buffer.toString(); 
    return forecastJsonStr; 
+0

我必须在最后写?实际上,我正在通过udacity举办的Google开发者开展在线课程,他们没有做过任何类似的事情。 – Rebecca

+0

是否重要,如果我改变为结果参数,即公共类ForecastTask扩展公共类ForecastTask扩展?帮我。我真的很黑。 – Rebecca

+0

谢谢。其实它按照你的说法工作。:) – Rebecca