Ich möchte eine Aktivität haben, die REST API verbraucht mit der Volley-Bibliothek, unterdessen zeigt ein benutzerdefiniertes Layout (in XML-Layout-Datei geschrieben) auf dem Bildschirm.Aktivität verbraucht REST Webservice mit Volley-Bibliothek zeigt nicht Layout geladen von XML (über setContentView())
Also habe ich eine Aktivität geschrieben, die in ihrer onCreate() setContentView(R.layout.layout_file);
wie üblich aufruft. Die danach, es verbraucht die REST API durch Volley-Bibliothek (d. H. Baut das Volley RequestQueue
Objekt auf und ruft dann requestQueueObject.add(requestObject)
darauf auf).
Die (relevanten Teile des) Codes sind wie folgt angegeben.
Das Problem ist, dass während die Daten aus dem API REST heruntergeladen werden, das Layout aus der XML-Layout-Datei geladen mit setContentView()
(in onCreate()
vor den REST Web-Service raubend) wird nicht auf dem Bildschirm angezeigt und der Bildschirm bleibt leer. Danach wird das in XML definierte Layout für einen Augenblick angezeigt, und dann wird die nächste Aktivität AnotherActivity
gestartet.
Wenn ich bei der nächsten Aktivität die Zurück-Schaltfläche drücke, wird das in der XML-Datei festgelegte Layout in der ersten Aktivität angezeigt.
Wie behebe ich dieses Problem? daher dieses Problem
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
RequestQueue requestQueue = RequestQueueSingleton.getInstance(getApplicationContext()).getRequestQueue();
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, URL,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
...
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
...
}
});
requestQueue.add(request);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
startActivity(new Intent(this, AnotherActivity.class));
}
Ich denke, die Frage ist hier, weil Sie 'Thread.sleep nennen (5000);' vom Hauptthread innerhalb der 'onCreate' Stufe –
@AleksandrMedvedev Nein, das ist nur eine Überprüfung, die ich hinzugefügt habe, um sicherzustellen, dass das Laden von Layout aus XML tatsächlich verzögert wird, solange die REST-API verbraucht wird. – Solace
Warum haben Sie Ihre Aktivität beim Rückruf nicht gestartet? Wenn ich dich richtig verstanden habe, wartest du auf die Antwort? – once2go