杀死app后API响应的空对象引用。如果app logout正确响应将起作用

时间:2017-12-06 11:08:49

标签: android nullpointerexception retrofit2 okhttp3

如果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)'

1 个答案:

答案 0 :(得分:1)

new RetrofitHelper(MainActivity.this).getApIs()的值为null,因此您何时尝试访问feedback方法,它会抛出空引用。验证getApIs()方法并检查其返回的原因null

修改 我想你是在登录页面上初始化你的Refrofit客户端,因此如果你杀了并重新打开app,它就会返回null。尝试在主屏幕上初始化客户端