case R.id.route_1: if (mRoutePlanItems.get(1).getPusLabelName() == null) { return; } mLayoutTab0.setSelected(false); mLayoutTab1.setSelected(true); mLayoutTab2.setSelected(false); interruptCountdown(); BaiduNaviManagerFactory.getRouteResultManager().selectRoute(1); BaiduNaviManagerFactory.getRouteResultManager().fullView(); mRouteList.clear(); mRouteList.addAll(mRouteDetails.get(1)); mResultAdapter.notifyItemChanged(1); break; 以上代码点击报空指针 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.ArrayList.get(int)' on a null object reference
时间: 2023-11-22 08:56:48 浏览: 57
根据你提供的代码和报错信息,很有可能是 `mRouteDetails.get(1)` 返回了 null,导致调用 `addAll()` 和 `notifyItemChanged()` 报了空指针异常。你可以在调用 `addAll()` 之前先判断一下 `mRouteDetails.get(1)` 是否为 null,例如:
```
List<RouteDetail> routeDetailList = mRouteDetails.get(1);
if (routeDetailList != null) {
mRouteList.clear();
mRouteList.addAll(routeDetailList);
mResultAdapter.notifyItemChanged(1);
} else {
// 处理 null 的情况
}
```
这样就可以避免空指针异常了。
相关问题
数据为空时点击 报错 看代码 case R.id.route_1: checkRoutePlanItemsValidity(mRoutePlanItems); mLayoutTab0.setSelected(false); mLayoutTab1.setSelected(true); mLayoutTab2.setSelected(false); interruptCountdown(); BaiduNaviManagerFactory.getRouteResultManager().selectRoute(1); BaiduNaviManagerFactory.getRouteResultManager().fullView(); mRouteList.clear(); mRouteList.addAll(mRouteDetails.get(1)); mResultAdapter.notifyItemChanged(1); break; 其中checkRoutePlanItemsValidity(mRoutePlanItems);具体代码如下: public void checkRoutePlanItemsValidity(List<BNRoutePlanItem> mRoutePlanItems) { if (mRoutePlanItems == null || mRoutePlanItems.size() < 1 || mRoutePlanItems.get(0) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 111"); return; } if (mRoutePlanItems.size() < 2 || mRoutePlanItems.get(1) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 222"); return; } if (mRoutePlanItems.size() < 3 || mRoutePlanItems.get(2) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 333"); return; } } 报错 java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 帮我修改一下
根据报错信息 `java.lang.IndexOutOfBoundsException: Index: 1, Size: 0`,可以看出是因为 `mRoutePlanItems` 列表的大小为0,而在 `checkRoutePlanItemsValidity` 方法中需要访问列表的第一、二、三个元素,导致了越界异常。因此,你需要在调用 `checkRoutePlanItemsValidity` 方法之前,先对 `mRoutePlanItems` 列表进行非空判断。
修改后的代码如下:
```
case R.id.route_1:
if (mRoutePlanItems == null || mRoutePlanItems.size() < 1) {
// 对 mRoutePlanItems 进行非空判断
Log.d("TAGAA", "mRoutePlanItems is null or empty");
return;
}
checkRoutePlanItemsValidity(mRoutePlanItems);
mLayoutTab0.setSelected(false);
mLayoutTab1.setSelected(true);
mLayoutTab2.setSelected(false);
interruptCountdown();
BaiduNaviManagerFactory.getRouteResultManager().selectRoute(1);
BaiduNaviManagerFactory.getRouteResultManager().fullView();
mRouteList.clear();
mRouteList.addAll(mRouteDetails.get(1));
mResultAdapter.notifyItemChanged(1);
break;
```
阅读全文