2016-04-07 2 views
0

Я пытаюсь использовать YouTube Data API. Они создали Java-клиент. Here is the sample, который я попытался выполнить, чтобы отправить запрос на их серверы. У меня не может бытьAsyncTask doInBackground() возвращает null

// Call the API and print results. 
SearchListResponse searchResponse = search.execute(); 
List<SearchResult> searchResultList = searchResponse.getItems(); 

в главной теме, потому что Android не разрешает сетевое взаимодействие по основному потоку. Поэтому я попытался использовать AsyncTask

public class youtubeSearchTask extends AsyncTask<YouTube.Search.List, Void, SearchListResponse> { 

    @Override 
    protected SearchListResponse doInBackground(YouTube.Search.List... params) { 
     SearchListResponse a; 
     try { 
      a = params[0].execute(); 
     } catch (java.io.IOException ioe) { 
      ioe.printStackTrace(); 
     } 
     return a; 
    } 

    @Override 
    protected void onPostExecute(SearchListResponse searchResponse) { 
     List<SearchResult> searchResultList = searchResponse.getItems(); 
     List<String> videoIds = new ArrayList<String>(); 

     if (searchResultList != null) { 

      // Merge video IDs 
      for (SearchResult searchResult : searchResultList) { 
       videoIds.add(searchResult.getId().getVideoId()); 
      } 
      Joiner stringJoiner = Joiner.on(','); 
      String videoId = stringJoiner.join(videoIds); 

      // Call the YouTube Data API's youtube.videos.list method to 
      // retrieve the resources that represent the specified videos. 
      try { 
       YouTube.Videos.List listVideosRequest = youtube.videos().list("snippet, statistics").setId(videoId); 
       new videoSearchTask().execute(listVideosRequest); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

} 

Я попытался

return params[0].execute(); 

внутри метода doInBackground, но это заставило меня объяснить возможной IOException. Поэтому я изменил код, и теперь он говорит variable 'a' might not have been initialized. Что я делаю?

ответ

0

Может быть, если вы инициализации переменной а, по крайней мере с нулевым SearchListResponse a = null; он удалит a not initialized

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

  • Нет связанных вопросов^_^