如果应用程序被手动终止并尝试发送更新,我将在 API 响应中收到 nullPointerException
。如果我正确注销它的工作正常。我记录了输入值,一切都很好。任何人请查看此代码
这是我的 API 更新。
private void updateFb(final String shop, final String phone,final String user_ids,final String lat, String lon,final String feedb) {
Log.i("TAG", shop+","+phone+","+user_ids+","+lat+","+lon+","+feedb);
new RetrofitHelper(MainActivity.this)
.getApIs()
.feedback(shop,phone,user_ids,lat,lon,feedb)
.enqueue(new Callback<JsonElement>()
{
@Override
public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
try {
JSONObject jsonObject=new JSONObject(response.body().toString());
String status=jsonObject.getString("status");
String date_time=jsonObject.getString("dt_time");
if (status=="Failed"){
Toasty.error(MainActivity.this, "Updating Failed", Toast.LENGTH_SHORT).show();
}
else {
shopName.setText("");
feedback.setText("");
phoneEdt.setText("");
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
Toasty.success(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<JsonElement> call, Throwable t) {
}
});
// API interface
@FormUrlEncoded
@POST("/web-api/insert_shop.php?")
Call<JsonElement>feedback(@Field("shop_name") String shopName,@Field("phone")String phone, @Field("user_id") String user_id,
@Field("pos_lat") String pos_lat, @Field("pos_long") String pos_lon, @Field("feedback") String feedback);
我得到了回应。
java.lang.NullPointerException: Attempt to invoke interface method 'retrofit2.Call com.example.user.comcubeassist.retrofit.APIs.feedback(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)' on a null object reference
最佳答案
new RetrofitHelper(MainActivity.this).getApIs()
的值为null
,因此您何时尝试访问feedback
方法,它抛出空引用。验证 getApIs()
方法并检查它返回 null
的原因。
编辑 我猜你正在登录页面上初始化你的 Refrofit 客户端,因此如果你终止并重新打开 app ,它会返回 null 。尝试在主屏幕上初始化客户端
关于android - 终止应用程序后 API 响应的空对象引用。如果应用程序正确注销响应将起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47672885/