提问人:Nico 提问时间:9/16/2022 最后编辑:Maneesha IndrachapaNico 更新时间:9/21/2022 访问量:73
转换器应用程序上的 java.lang.NullPointerException
java.lang.NullPointerException on converter app
问:
我目前正在创建一个带有 API 调用的实时货币转换器应用程序,但每当我单击按钮转换货币时,我的应用程序就会崩溃,并且会出现以下行:
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.gson.JsonObject com.google.gson.JsonObject.getAsJsonObject(java.lang.String)' on a null object reference
at com.example.converterproject.MoneyActivity$1$1.onResponse(MoneyActivity.java:70)
以下是我编写的一些代码:
MoneyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RetrofitInterface retrofitInterface = RetrofitBuilder.getRetrofitInstance().create(RetrofitInterface.class);
Call<JsonObject> call = retrofitInterface.getExchangeCurrency(MoneyTo.getSelectedItem().toString());
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
JsonObject res = response.body();
JsonObject rates = res.getAsJsonObject("rates");
double currency = Double.valueOf(MoneyEd.getText().toString());
double multiplier = Double.valueOf(rates.get(MoneyFrom.getSelectedItem().toString()).toString());
double result = currency * multiplier;
MoneyTextView.setText(String.valueOf(result));
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
}
});
}
});
所以很明显是导致问题的线路。我真的不知道如何解决这个问题,所以我非常感谢一些帮助JsonObject rates = res.getAsJsonObject("rates");
答:
0赞
Elfadil Sulieman
9/16/2022
#1
看来您的响应是 JsonObject,您不需要获取 res,即 JsonObject => 作为 JsonObject。JsonObject res = response.body();
因此,如果您删除此行
JsonObject rates = res.getAsJsonObject("rates");
并改用 res。我认为这会起作用。
评论
NullPointerException
rates
NullPointerException
res
onResponse
onFailure