【问题标题】:On map ready callbacks returning null地图就绪回调返回 null
【发布时间】:2020-06-04 22:44:22
【问题描述】:

我正在尝试为我的应用程序制作一个 google api,以在我的应用程序上显示谷歌地图,但我不断收到此错误 java.lang.RuntimeException:无法启动活动 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)' 在空对象引用上

这是地图活动

@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);

【问题讨论】:

    标签: java android google-api


    【解决方案1】:

    当我们调用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))
    }
    

    【讨论】:

    • 那我怎么解决我不明白
    • 如前所述,您需要确保在调用onMapReady 之后使用mMap
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2014-10-29
    • 1970-01-01
    相关资源
    最近更新 更多