改进2 java空指针对象引用

改进2 java空指针对象引用,java,android,nullpointerexception,retrofit2,Java,Android,Nullpointerexception,Retrofit2,嗨,我正在尝试使用改型解析JSON,将其保存在Sqlite上并显示在RecyclerView上。但是,当我尝试打开活动时,我的应用程序崩溃。 下面是我的相关活动的完整代码。你能帮我解决这个问题吗? 多谢各位 public class InventoryProductActivity extends AppCompatActivity implements InventoryProductListAdapter.CustomClickListener { private static f

嗨,我正在尝试使用改型解析JSON,将其保存在Sqlite上并显示在RecyclerView上。但是,当我尝试打开活动时,我的应用程序崩溃。 下面是我的相关活动的完整代码。你能帮我解决这个问题吗? 多谢各位

public class InventoryProductActivity extends AppCompatActivity implements InventoryProductListAdapter.CustomClickListener {

    private static final String TAG = InventoryProductActivity.class.getSimpleName();
    private InventoryProductListAdapter mInventoryProductListAdapter;
    private RecyclerView mRecyclerView;
    private RetrofitClient mRetrofitClient;
    LinearLayoutManager mLinearLayoutManager;
    private WarehouseDatabase mDatabase;
    private ProgressDialog mProgressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_inventory_product);
        configViews();

        mRetrofitClient = new RetrofitClient();
        mDatabase = new WarehouseDatabase(this);

        loadInventoryProductFeed();
    }

    private void configViews() {
        mRecyclerView = findViewById(R.id.recycler_view_inventory_product);
        mRecyclerView.setHasFixedSize(true);

        mLinearLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);

        mInventoryProductListAdapter = new InventoryProductListAdapter(this);
        mRecyclerView.setAdapter(mInventoryProductListAdapter);
    }

    private void loadInventoryProductFeed() {
        mProgressDialog = new ProgressDialog(InventoryProductActivity.this);
        mProgressDialog.setMessage("Loading Inventory Data...");
        mProgressDialog.setCancelable(true);
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        mProgressDialog.setIndeterminate(true);
        mProgressDialog.show();

        mInventoryProductListAdapter.reset();
        if (getNetworkAvailability()) {
            getFeed();
        } else {
            getFeedFromDatabase();
        }
    }

    private void getFeed() {
        Call<List<InventoryProductModel>> listCall = mRetrofitClient.getWarehouseServiceInventoryProduct().getAllInventoryProducts();
        listCall.enqueue(new Callback<List<InventoryProductModel>>() {
            @Override
            public void onResponse(Call<List<InventoryProductModel>> call, Response<List<InventoryProductModel>> response) {
                if (response.isSuccessful()) {
                    List<InventoryProductModel> inventoryProductModelList = response.body();

                    for (int i = 0; i < inventoryProductModelList.size(); i++) {
                        InventoryProductModel inventoryProductModel = inventoryProductModelList.get(i);
                        mInventoryProductListAdapter.notifyDataSetChanged();
                    }
                } else {
                    int sc = response.code();
                    switch (sc) {
                    }
                }
                mProgressDialog.dismiss();
            }

            @Override
            public void onFailure(Call<List<InventoryProductModel>> call, Throwable t) {
                mProgressDialog.dismiss();
                Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void getFeedFromDatabase() {
        List<InventoryProductModel> inventoryProductModelList = mDatabase.getInventoryProducts();
        for (int i = 0; i < inventoryProductModelList.size(); i++) {
            InventoryProductModel inventoryProductModel = inventoryProductModelList.get(i);
            Log.d(TAG, inventoryProductModel.getName() + "||" + inventoryProductModel.getCountryId());
        }
        mProgressDialog.dismiss();
    }

    private boolean getNetworkAvailability() {
        return Utils.isNetworkAvailable(getApplicationContext());
    }

    @Override
    public void onClick(int position) {

    }
}
E/WindowManager:android.view.WindowManager:Activity codes.bala.bmsfinal1.activity.MainActivity已泄漏窗口 DecorView@52c3fcd[]最初添加到此处的 在android.view.ViewRootImpl.ViewRootImpl.java:418 在android.view.WindowManagerGlobal.addViewWindowManagerGlobal.java:331 在android.view.WindowManagerImpl.addViewWindowManagerImpl.java:93 在android.app.Dialog.showDialog.java:322 在android.app.ProgressDialog.showProgressDialog.java:116 在android.app.ProgressDialog.showProgressDialog.java:104 位于codes.bala.bmsfinal1.activity.MainActivity.LoginMainInactivity.java:61 位于codes.bala.bmsfinal1.activity.MainActivity$1.onClickMainActivity.java:41 在android.view.view.performClickView.java:5637 在android.view.view$PerformClick.runView.java:22429 位于android.os.Handler.handleCallbackHandler.java:751 在android.os.Handler.dispatchMessageHandler.java:95 在android.os.Looper.Looper.java:154 在android.app.ActivityThread.mainActivityThread.java:6119 在java.lang.reflect.Method.Invokenactive方法中 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:886 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:776 I/ViewConfigCompat:在上找不到方法getScaledScrollFactor ViewConfiguration D/AndroidRuntime:关闭虚拟机

-----崩溃开始E/AndroidRuntime:致命异常:主 工艺:codes.bala.bmsfinal1,PID:12077 java.lang.RuntimeException:无法启动活动组件信息{code.bala.bmsfinal1/code.bala.bmsfinal1.activity.InventoryProductActivity}: java.lang.NullPointerException:尝试调用接口方法 “2.打电话 代码.bala.bmsfinal1.iinterface.WarehouseService.getAllInventoryProducts' 关于空对象引用 在android.app.ActivityThread.performLaunchActivityActivityThread.java:2665 在android.app.ActivityThread.handleLaunchActivityActivityRead.java:2726 在android.app.ActivityThread上。-wrap12ActivityThread.java 在android.app.ActivityThread$H.handleMessageActivityThread.java:1477 位于android.os.Handler.dispatchMessageHandler.java:102 在android.os.Looper.Looper.java:154 在android.app.ActivityThread.mainActivityThread.java:6119 在java.lang.reflect.Method.Invokenactive方法中 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:886 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:776

原因:java.lang.NullPointerException:尝试调用接口 方法“2.Call” 代码.bala.bmsfinal1.iinterface.WarehouseService.getAllInventoryProducts' 关于空对象引用 位于codes.bala.bmsfinal1.activity.InventoryProductActivity.getFeedInventoryProductActivity.java:88 位于codes.bala.bmsfinal1.activity.InventoryProductActivity.loadInventoryProductFeedInventoryProductActivity.java:70 位于codes.bala.bmsfinal1.activity.InventoryProductActivity.onCreateInventoryProductActivity.java:46 在android.app.Activity.performCreateActivity.java:6679 在android.app.Instrumentation.callActivityOnCreateInstrumentation.java:1118 在android.app.ActivityThread.PerformLaunchActivityActivityRead.java:2618 在android.app.ActivityThread.handleLaunchActivityActivityRead.java:2726 在android.app.ActivityThread.-wrap12ActivityThread.java 在android.app.ActivityThread$H.handleMessageActivityThread.java:1477 位于android.os.Handler.dispatchMessageHandler.java:102 在android.os.Looper.Looper.java:154 在android.app.ActivityThread.mainActivityThread.java:6119 在java.lang.reflect.Method.Invokenactive方法中 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:886 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java :776  申请终止

方法返回null。
您应该在此方法内设置断点,并检查发生的情况或向此方法添加一些日志。

Hello。谢谢你的回复。基本url中似乎输入错误。它告诉我链接必须以/结尾。
getWarehouseServiceInventoryProduct()