私はライブラリとしてretrofitを使用してAPIから情報を引き出すアプリケーションを持っています。私はそれがすべて働いていたと思ったが、私はnullポインタ例外とアプリのクラッシュを取得し、私がなぜわからないんだアプリケーションを実行するたび:改造を構築私のアプリケーション(改造)を実行すると致命的な例外はありますか?
インタフェース:
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;
}
}
}
}
店舗JSONをリストに配列:(私はなぜ知らないが、致命的な例外をトリガコード)
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;
}
}
最後に、私はそれを呼んでいる:
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());
}
});
}
私はすべての関連コードを含んでいると思いますが、欠落しているものがあればここに投稿することができます。私はGithubのプロジェクトのより完全なバージョンも持っています。
ありがとうございました。
あなたは 'tempLat'と' tempLon'が 'null'ではないと確信していますか?それを解析する前に 'null'チェックを追加して二重にする必要があります。 – user2004685
うーん、私は今チェックを追加しますが、なぜそうであればnullを返すのか分からないので、APIから値を返すべきではないでしょうか? – Cypher236
それは応答を返すかもしれませんが、あなたはそれを確認する必要があります。また、受信した応答を適切に解析していることを確認する必要があります。 – user2004685