如果app被手动杀死并尝试发送更新,我将在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:尝试调用接口方法'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)'
答案 0 :(得分:1)
new RetrofitHelper(MainActivity.this).getApIs()
的值为null
,因此您何时尝试访问feedback
方法,它会抛出空引用。验证getApIs()
方法并检查其返回的原因null
。
修改强> 我想你是在登录页面上初始化你的Refrofit客户端,因此如果你杀了并重新打开app,它就会返回null。尝试在主屏幕上初始化客户端