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 10:56:48 浏览: 30
根据你提供的代码和报错信息,很有可能是 `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 的情况
}
```
这样就可以避免空指针异常了。
相关问题
/** * 获取首选图标id * * @param isSelected 被选中 * @return 首选图标id */ public int getPreferIconId(boolean isSelected) { int drawableId; switch (mPreferValue) { case IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_TIME_FIRST: drawableId = isSelected ? R.drawable.nsdk_drawable_route_sort_time_first_selected : R.drawable.nsdk_drawable_route_sort_time_first_normal; break; case IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_DISTANCE_FIRST: drawableId = isSelected ? R.drawable.nsdk_drawable_route_sort_distance_first_selected : R.drawable.nsdk_drawable_route_sort_distance_first_normal; break; case IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_AVOID_TRAFFIC_JAM: drawableId = isSelected ? R.drawable.nsdk_drawable_route_sort_avoid_traffic_jam_selected : R.drawable.nsdk_drawable_route_sort_avoid_traffic_jam_normal; break; case IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_NOHIGHWAY: drawableId = isSelected ? R.drawable.nsdk_drawable_route_sort_nohighway_selected : R.drawable.nsdk_drawable_route_sort_nohighway_normal; break;
这段代码是一个方法`getPreferIconId`,用于获取首选图标的资源ID。
以下是代码的解释:
- `getPreferIconId`是一个公共方法,它接受一个布尔类型的参数`isSelected`,表示是否被选中。
- 在方法中,根据成员变量`mPreferValue`的不同值,使用`switch`语句来决定返回不同的首选图标资源ID。
- 如果`mPreferValue`为`IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_TIME_FIRST`,则根据`isSelected`的值来返回相应的图标资源ID。
- 如果`mPreferValue`为`IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_DISTANCE_FIRST`,则根据`isSelected`的值来返回相应的图标资源ID。
- 如果`mPreferValue`为`IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_AVOID_TRAFFIC_JAM`,则根据`isSelected`的值来返回相应的图标资源ID。
- 如果`mPreferValue`为`IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_NOHIGHWAY`,则根据`isSelected`的值来返回相应的图标资源ID。
以上是对代码段的解释,如果还有其他部分需要解释,请继续发送给我。
case IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_ROAD_FIRST: drawableId = isSelected ? R.drawable.nsdk_drawable_route_sort_road_first_selected : R.drawable.nsdk_drawable_route_sort_road_first_normal; break; case IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_NOTOLL: // 少油费(驾车)与省钱路线(货车)针对的车辆类型不同,省钱路线是在少邮费的基础上结合车辆油耗进行了二次运算 case IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_ECONOMIC_ROUTE: drawableId = isSelected ? R.drawable.nsdk_drawable_route_sort_notoll_selected : R.drawable.nsdk_drawable_route_sort_notoll_normal; break; default: drawableId = isSelected ? R.drawable.nsdk_drawable_route_sort_default_selected : R.drawable.nsdk_drawable_route_sort_default_normal; break; } return drawableId; } }
在这段代码中,`switch`语句继续判断`mPreferValue`的值,并根据不同的情况返回相应的图标资源ID。
以下是代码的解释:
- 如果`mPreferValue`为`IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_ROAD_FIRST`,则根据`isSelected`的值来返回相应的图标资源ID。
- 如果`mPreferValue`为`IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_NOTOLL`或者`IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_ECONOMIC_ROUTE`,则根据`isSelected`的值来返回相应的图标资源ID。
- 如果以上条件都不满足,则返回默认的图标资源ID。
最后,方法返回获取到的图标资源ID。
以上是对代码段的解释,如果还有其他部分需要解释,请继续发送给我。