Внутри вашего RequestYouTubeAPI
ASyncTask
у вас есть этот код ошибки:
} catch (IOException e) {
e.printStackTrace();
return null;
}
Тогда в onPostExecute
вы получите следующее:
@Override
protected void onPostExecute(String response) {
super.onPostExecute(response);
if(response != null){
try {
JSONObject jsonObject = new JSONObject(response);
Log.e("response", jsonObject.toString());
mListData = parseVideoListFromResponse(jsonObject);
initList(mListData);
//adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Поэтому, если вы получитеошибка, вы return null
, и если onPostExecute
дается ответ null
, он ничего не делает.
Так что в этом единственном месте вы можете получить ошибку и, следовательно, пустой фрагмент.
Прежде чем исправить это, вы можете доказать, что это происходит следующим образом:
@Override
protected void onPostExecute(String response) {
super.onPostExecute(response);
if(response == null){
Log.e("TUT", "We did not get a response, not updating the UI.");
} else {
try {
JSONObject jsonObject = new JSONObject(response);
Log.e("response", jsonObject.toString());
mListData = parseVideoListFromResponse(jsonObject);
initList(mListData);
//adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Вы можете исправить это двумя способами:
в doInBackground
изменить улов на это:
} catch (IOException e) {
Log.e("TUT", "error", e);
// Change this JSON to match what the parse expects, so you can show an error on the UI
return "{\"yourJson\":\"error!\"}";
}
или onPostExecute
:
if(response == null){
List errorList = new ArrayList();
// Change this data model to show an error case to the UI
errorList.add(new YouTubeDataModel("Error");
mListData = errorList;
initList(mListData);
} else {
try {
JSONObject jsonObject = new JSONObject(response);
Log.e("response", jsonObject.toString());
mListData = parseVideoListFromResponse(jsonObject);
initList(mListData);
//adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
Надеюсь, это поможет, могут быть другие ошибки в коде, но это один случай, который может произойти, если есть проблема сAPI, JSON, авторизация, интернет и т. д.