Мне нужно извлечь данные из JSON, переменная idVideo
сохраняется в сеттере из класса Video
, затем у меня есть другой метод для доступа с помощью getter, но значение всегда null
.
Код из метода извлечения данных JSON:
public void sacarJsonInfoVideo(String url){
RequestQueue request = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject jsonObject = new JSONObject(response.toString(0));
JSONArray jsonArray=jsonObject.getJSONArray("items");
for(int i=0; i<jsonArray.length(); i++){
String idVideo=jsonArray.getJSONObject(i).getJSONObject("id").getString("videoId");
video.setIdVideo(idVideo);
String tituloVideo=jsonArray.getJSONObject(i).getJSONObject("snippet").getString("title");
video.setTitulo(tituloVideo);
String fechaSubida=jsonArray.getJSONObject(i).getJSONObject("snippet").getString("publishedAt");
String SfechaSubida=fechaSubida.substring(0, 10);
video.setDiaSubida(SfechaSubida);
String nombreCanal=jsonArray.getJSONObject(i).getJSONObject("snippet").getString("channelTitle");
video.setNombreCanal(nombreCanal);
String miniatura=jsonArray.getJSONObject(i).getJSONObject("snippet").getJSONObject("thumbnails").getJSONObject("default").getString("url");
video.setMiniatura(miniatura);
listVideo.add(video);
}
String idVideos =listVideo.get(0).getIdVideo();
System.out.println("Id a reproducir(sacarJsonInfoVideo): "+ idVideos);
tvNombreVideo.setText(listVideo.get(0).getTitulo());
tvNombreCanal.setText(listVideo.get(0).getNombreCanal());
tvFechaSubida.setText(listVideo.get(0).getDiaSubida());
} catch (JSONException e) {
siguienteVideo(v);
Toast.makeText(getApplicationContext(), "Holi", Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
request.add(jsonObjectRequest);
}
Получатель сохраняется в переменной с именем sdw
, всегда равен null
: (
public void siguienteVideo(View v) {
String idVideo = obtenerRandomIdVideo();
System.out.println("Id URL(siguienteVideo): "+idVideo);
String urlBuscarVideo = "https://www.googleapis.com/youtube/v3/search?part=id,snippet&maxResults=5&type=video&q="+idVideo+"&key="+claveYT;
sacarJsonInfoVideo(urlBuscarVideo);
String sdw=video.getIdVideo();
System.out.println("Video que se va a reproducir YA: "+sdw);
}
При отладкеу меня есть консоль
I/System.out: String a buscar(obtenerRandomIdVideo): 5mey1
Id URL(siguienteVideo): 5mey1
I/System.out: Video que se va a reproducir YA: null
I/System.out: Id a reproducir(sacarJsonInfoVideo): 3FTkUWUc7es
Это похоже на метод, выполняемый позже, чем System.out.println()
.
Извините за мой плохой английский, я пришел из stackoverflow на испанском и у меня нетхороший ответ.