Retrofit2 java 空指针对象引用



嗨,我正在尝试使用Retrofit解析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.WindowLeaked: Activity codes.bala.bmsfinal1.activity.MainActivity 已泄露窗口 最初在此处添加的DecorView@52c3fcd[] at android.view.ViewRootImpl.(ViewRootImpl.java:418( at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331( at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93( at android.app.Dialog.show(Dialog.java:322( at android.app.ProgressDialog.show(ProgressDialog.java:116( at android.app.ProgressDialog.show(ProgressDialog.java:104( at codes.bala.bmsfinal1.activity.MainActivity.login(MainActivity.java:61( at codes.bala.bmsfinal1.activity.MainActivity$1.onClick(MainActivity.java:41( at android.view.view.performClick(View.java:5637( at android.view.View$PerformClick.run(View.java:22429( at android.os.Handler.handleCallback(Handler.java:751( at android.os.Handler.dispatchMessage(Handler.java:95( at android.os.Looper.loop(Looper.java:154( at android.app.ActivityThread.main(ActivityThread.java:6119( at java.lang.reflect.Method.invoke(Native Method( at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886( at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776( I/ViewConfigCompat: 找不到方法 getScaledScrollFactor(( ViewConfiguration D/AndroidRuntime: Shutdowning VM

---------崩溃的开始 E/Android运行时:致命异常:main 进程: 代码.bala.bmsfinal1, PID: 12077 java.lang.RuntimeException: 无法启动活动 ComponentInfo{codes.bala.bmsfinal1/codes.bala.bmsfinal1.activity.InventoryProductActivity}: java.lang.NullPointerException:尝试调用接口方法 '改造2.叫 codes.bala.bmsfinal1.iinterface.WarehouseService.getAllInventoryProducts((' 在空对象引用上 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665( at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726( at android.app.ActivityThread.-wrap12(ActivityThread.java( at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477( at android.os.Handler.dispatchMessage(Handler.java:102( at android.os.Looper.loop(Looper.java:154( at android.app.ActivityThread.main(ActivityThread.java:6119( at java.lang.reflect.Method.invoke(Native Method( at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886( at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776(

原因:java.lang.NullPointer异常:尝试调用接口 方法'改造2.叫 codes.bala.bmsfinal1.iinterface.WarehouseService.getAllInventoryProducts((' 在空对象引用上 at codes.bala.bmsfinal1.activity.InventoryProductActivity.getFeed(InventoryProductActivity.java:88( at codes.bala.bmsfinal1.activity.InventoryProductActivity.loadInventoryProductFeed(InventoryProductActivity.java:70( at codes.bala.bmsfinal1.activity.InventoryProductActivity.onCreate(InventoryProductActivity.java:46( at android.app.Activity.performCreate(Activity.java:6679( at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118( at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618( at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726( at android.app.ActivityThread.-wrap12(ActivityThread.java( at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477( at android.os.Handler.dispatchMessage(Handler.java:102( at android.os.Looper.loop(Looper.java:154( at android.app.ActivityThread.main(ActivityThread.java:6119( at java.lang.reflect.Method.invoke(Native Method( at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886( at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776( 应用程序已终止。

getWarehouseServiceInventoryProduct()

方法返回null。 您应该在此方法中设置断点并检查发生了什么(或向此方法添加一些日志(。

最新更新