Ich mache eine Android-App und ich muss eine JSONObjectRequest machen, um einen Parameter (logo
) von einem package.json
in einem Github-Repository zu erhalten.Synchronisation mit JSONObjectRequest (Android)
Dies ist die Methode, wo ich die JSON Anfrage
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);
}
machen habe ich eine Variable definiert (logo
) in Global
Klasse, das Singleton-Muster folgt, so kann ich es überall in meinem Programm zugreifen. Nachdem ich diese Anfrage gestellt habe, möchte ich eine Variable mit dem Wert des Logos setzen.
Dies ist das Stück Code, wo ich die vorherige Funktion aufrufen.
if (full_name != null) {
String url = "https://raw.githubusercontent.com/" + full_name + "/master/";
this.askLogoPath(url + "package.json");
this.setLogoPath(Global.getInstance().getLogo());
}
Ich habe bemerkt, dass die onResponse
Teil der letzte, ausgeführt werden soll, so, wenn ich setLogoPath(Global.getInstance.getLogo())
Logo zu tun ist immer noch null, so kann ich nicht logoPath
in der vorherigen Zeile gesetzt. Ich würde gerne warten, bis dies ausgeführt wird, also wird es nicht null sein.
Gibt es eine Möglichkeit, es synchron zu machen, damit ich das tun kann?
Vielen Dank