Я делаю приложение для Android, и мне нужно сделать JSONObjectRequest, чтобы получить параметр (logo
) из package.json
в репозитории github.Синхронизация с JSONObjectRequest (Android)
Это метод, где я сделать запрос JSON
public void askLogoPath(String url) {
JsonObjectRequest req = new JsonObjectRequest(url,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
if (response.has("logo"))
Global.getInstance().setLogo(response.getString("logo"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
// Adding request to request queue
QueueController.getInstance().addToRequestQueue(req);
}
Я определил переменную (logo
) в Global
классе, который следует Singleton шаблон, так что я могу получить доступ к нему везде в моей программе. После выполнения этого запроса я хочу установить переменную со значением логотипа.
Это фрагмент кода, в котором я вызываю предыдущую функцию.
if (full_name != null) {
String url = "https://raw.githubusercontent.com/" + full_name + "/master/";
this.askLogoPath(url + "package.json");
this.setLogoPath(Global.getInstance().getLogo());
}
Я заметил, что onResponse
часть является последним, чтобы быть выполнены, поэтому, когда я setLogoPath(Global.getInstance.getLogo())
логотип остается пустым, поэтому я не могу установить logoPath
в предыдущей строке. Я хотел бы подождать, пока это не будет выполнено, поэтому оно не будет равно нулю.
Есть ли способ сделать это синхронным, чтобы я мог это сделать?
Большое спасибо