我正在尝试为我的应用程序制作一个谷歌 API,以在我的应用程序上显示谷歌地图,但我不断收到此错误 java.lang.RuntimeException:无法启动 Activity ComponentInfo{com.123.1234/com.123.1234.RideHailActivity}:java.lang.NullPointerException:尝试调用虚拟方法 'void com.google.android.gms.maps.SupportMapFragment空对象引用上的 .getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)'
这是 map Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ride_hail);
final SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
assert mapFragment != null;
mapFragment.getMapAsync(this);
最佳答案
当我们调用 mapFragment.getMapAsync(this);
时,您可能会注意到 Async
这个词,这意味着我们可能无法立即获取 GoogleMap 引用。
大多数情况下您会得到null
。所以 assert mapFragment != null;
将抛出错误
您必须实现 OnMapReadyCallback#onMapReady
回调才能获取 GoogleMap 引用而不是 null。
您还可以从 Android Studio 创建一个 GoogleMap 示例,您将看到:
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
// Add a marker in Sydney and move the camera
val sydney = LatLng(-34.0, 151.0)
mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}
关于java - map 就绪回调返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62205367/