java - NullPointerException 尝试在空对象引用上调用 method.GoogleMap.setMapType(int)'
问题描述
我在片段中有一个谷歌地图,可以在我的应用程序中绘制多边形。和操作栏上的菜单,我可以更改我的地图视图类型。还有一个谷歌地图片段上的 FAB 将地图类型更改为卫星视图。但是当我点击 FAB 时,我的应用程序崩溃并抛出
NullPointerException:尝试在空对象引用上调用虚拟方法“void com.google.android.gms.location.places.ui.SupportPlaceAutocompleteFragment.setFilter(com.google.android.gms.location.places.AutocompleteFilter)”。
这是我在 onCreateView 方法中的代码:
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
mapViewModel = ViewModelProviders.of(this).get(MapViewModel.class);
View root = inflater.inflate(R.layout.fragment_map, container, false);
setHasOptionsMenu(true);
FloatingActionButton fab = root.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
}
});
这是在 menuItem 中工作的代码:
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.normal:
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
break;
case R.id.satellite:
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
break;
case R.id.Draw:
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
break;
default:
return false;
}
return true;
}
解决方案
在调用它之前,您需要确保您的 GoogleMap 实例mMap
已经初始化setMapType
。首先尝试快速检查:
if (mMap != null) {
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
}
最重要的是,仔细检查您是否按照 Google指南getMapAsync
使用和方法正确初始化了地图。onMapReady
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
}
希望这可以帮助!
推荐阅读
- javascript - findByIdAndUpdate 在使用 $set 时更新错误的子对象
- dictionary - 映射到数组内对象内的数组
- javascript - 如何使用 jquery 每个函数为元素添加宽度?
- report - 谷歌数据工作室未能提供“搜索关键字与首页排名”的表格
- javascript - XMLHttpRequest 未定义
- python - 如何根据列表在 kivy 中生成 6 个彩色标签?
- php - 查询计算每个月的总工资
- ios - 调用 tableView.reloadData() 时 UITableView 不更新,是什么导致了这个问题?
- php - 执行后台外部程序
- r - 使用 ggarange 时标签未出现在第二张图的 x 轴上