Also habe ich eine Anwendung, die Informationen aus einer API mit Retrofit als Bibliothek bezieht. Ich dachte, ich hatte alles funktioniert, aber wenn ich die Anwendung ausführen ich eine Null-Zeiger Ausnahme erhalten und die App-Abstürze und ich bin nicht sicher, warum:Schwerwiegende Ausnahme, wenn ich meine Anwendung (Nachrüstung) ausführe?
Die Schnittstelle, die Nachrüstung baut:
public interface FriendsAPI {
static final String URL = "https://www.cs.kent.ac.uk/";
@GET("https://www.cs.kent.ac.uk/people/staff/iau/LocalUsers.php")
Call<User> getFriends();
class Factory {
private static FriendsAPI service;
public static FriendsAPI getInstance() {
if (service == null) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(URL)
.build();
return service;
} else {
return service;
}
}
}
}
Speichert die JSON Array in eine Liste:
public class FriendsInfo {
@SerializedName("Users")
@Expose
private List<User> Users = new ArrayList<User>();
/**
*
* @return
* The Users
*/
public List<User> getUsers() {
return Users;
}
/**
*
* @param Users
* The Users
*/
public void setUsers(List<User> Users) {
this.Users = Users;
}
}
Schließlich, wo ich es bin Aufruf (und der Code, der die schwerwiegenden Ausnahme auslöst, obwohl ich weiß nicht, warum):
public void populateFriends(){
FriendsAPI.Factory.getInstance().getFriends().enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
String tempLat = response.body().getLat();
String tempLon = response.body().getLon();
tLat = Double.parseDouble(tempLat);
tLon = Double.parseDouble(tempLon);
}
@Override
public void onFailure(Call<User> call, Throwable t) {
Log.e("Failed :(",t.getMessage());
}
});
}
Ich denke, ich habe alle relevanten Code enthalten, aber wenn etwas fehlt, kann ich es hier posten. Ich habe auch eine vollständigere Version des Projekts auf Github.
Vielen Dank im Voraus Jungs.
Sind Sie sicher, dass "tempLat" und "tempLon" nicht "null" sind? Sie sollten eine 'Null'-Prüfung hinzufügen, bevor Sie sie doppelt analysieren. – user2004685
Hmm Ich füge jetzt einen Check hinzu, aber ich bin mir nicht sicher, warum sie null zurückgeben, wenn das der Fall ist, sollten sie nicht Werte von der API zurückgeben? – Cypher236
Es könnte die Antwort zurückgeben, aber dann müssen Sie das überprüfen. Außerdem müssen Sie sicherstellen, dass Sie die empfangene Antwort ordnungsgemäß analysieren. – user2004685