java.lang.NullPointerException: Attempt to invoke virtual method ‘void com.baidu.mapapi.map.BaiduMap

博客内容讲述了在Android应用程序中,尝试开启百度地图定位图层时遇到的`NullPointerException`。问题在于没有正确初始化`BaiduMap`对象。通过在`initView()`方法中添加`mBaiduMap = mMapView.getMap();`来确保对象被正确赋值,从而解决了空指针异常。尽管地图能够正常显示,但定位功能仍存在问题,暗示可能需要进一步配置定位权限或设置定位参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.NullPointerException: Attempt to invoke virtual method ‘void com.baidu.mapapi.map.BaiduMap.setMyLocationEnabled(boolean)’ on a null object reference

at com.dongwanghan.mapscov.MapsActivity.onStart(MapsActivity.java:88)

    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1425)
    at android.app.Activity.performStart(Activity.java:7825)
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294)
  
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
   
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
   
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:214)
    
    at android.app.ActivityThread.main(ActivityThread.java:7356)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

开启百度地图定位图层,报“空指针异常”的错误
部分源代码如下:

@Override
protected void onStart() {
    super.onStart();
    //开启地图定位图层
    mBaiduMap.setMyLocationEnabled(true);
    if(!mLocationClient.isStarted()){
        mLocationClient.start();
    }

}

加入try catch,显示地图功能正常运行
把mBaiduMap.setMyLocationEnabled(true);放入onCreate中也是报同样的错误

已经找到解决方法

private void initView(){
        mMapView = (MapView) findViewById(R.id.bmapView);
      
    }

上面这个开启百度地图的方法,只是显示了地图,但是定位图层也需要
所以需要在代码中添加
mBaiduMap = mMapView.getMap();
这个语句。,最后呈现结果是

private void initView(){
    mMapView = (MapView) findViewById(R.id.bmapView);
    mBaiduMap = mMapView.getMap();
}

不过空指针问题解决了,接下来就还有定位问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值