null pointer exception

ruo123zhuo 2015-08-16 12:57:37
转自http://blog.csdn.net/lmj623565791/article/details/37730469 的代码
上机后报错08-16 00:45:04.053: E/AndroidRuntime(22950): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.locmap1/com.example.locmap1.Locmap1}: java.lang.NullPointerException
网上查的说是字符串没有赋值,接口没有实例化或者没有判断变量是否为空。看了半天没看出来,可能大伙儿一眼就能看出。另外有没有哪位能讲讲debug解决这个问题该怎么弄。
谢谢

package com.example.locmap1;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;

import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class Locmap1 extends Activity
{
MapView mMapView;
BaiduMap mBaiduMap;
double mCurrentLantitude= 0.0;
double mCurrentLongitude= 0.0;
float mCurrentAccracy= 0.0f;

private LocationClient mLocationClient;
/**
* 定位的监听器
*/
public MyLocationListener mMyLocationListener;
/**
* 当前定位的模式
*/
private LocationMode mCurrentMode = LocationMode.NORMAL;
/***
* 是否是第一次定位
*/
private volatile boolean isFristLocation = true;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());

setContentView(R.layout.activity_locmap1);
mMapView = (MapView) findViewById(R.id.bmapView);
}

private void initMyLocation()
{
// 定位初始化
mLocationClient = new LocationClient(this);
mMyLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mMyLocationListener);
// 设置定位的相关配置
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
mLocationClient.setLocOption(option);
}

public class MyLocationListener implements BDLocationListener
{
@Override
public void onReceiveLocation(BDLocation location)
{

// map view 销毁后不在处理新接收的位置
if (location == null || mMapView == null)
return;
// 构造定位数据
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mCurrentAccracy = location.getRadius();
// 设置定位数据
mBaiduMap.setMyLocationData(locData);
mCurrentLantitude = location.getLatitude();
mCurrentLongitude = location.getLongitude();
// 设置自定义图标
BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher);
MyLocationConfiguration config = new MyLocationConfiguration(
mCurrentMode, true, mCurrentMarker);
mBaiduMap.setMyLocationConfigeration(config);
// 第一次定位时,将地图位置移动到当前位置
if (isFristLocation)
{
isFristLocation = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
}
}
}


@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}

@Override
protected void onStart()
{
// 开启图层定位
mBaiduMap.setMyLocationEnabled(true);
if (!mLocationClient.isStarted())
{
mLocationClient.start();
}
// 开启方向传感器

super.onStart();
}

@Override
protected void onStop()
{
// 关闭图层定位
mBaiduMap.setMyLocationEnabled(false);
mLocationClient.stop();

// 关闭方向传感器

super.onStop();
}

private void center2myLoc()
{
LatLng ll = new LatLng(mCurrentLantitude, mCurrentLongitude);
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
}

}


...全文
196 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
peter_nj_RD 2015-08-25
  • 打赏
  • 举报
回复
SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_locmap1); 这两行换下位置,要先加载Activity布局在做相关初始化吧 setContentView(R.layout.activity_locmap1); SDKInitializer.initialize(getApplicationContext());
ruo123zhuo 2015-08-21
  • 打赏
  • 举报
回复
引用 2 楼 shenyuanqing 的回复:
倒数第7、8行,no empty constructor 没有参数为空构造器,不能实例化类
是 mBaiduMap.setMyLocationEnabled(false); mLocationClient.stop(); 这两行? 哪个是空构造器?还有795行是啥意思? 新手勿喷,谢谢啊
ruo123zhuo 2015-08-17
  • 打赏
  • 举报
回复
有没有哪位知道为啥呀,求助。这是错误信息


还有debug的时候显示savedInstanceState null 不知是否和这个有关
原氢 2015-08-17
  • 打赏
  • 举报
回复
引用 2 楼 shenyuanqing 的回复:
倒数第7、8行,no empty constructor 没有参数为空构造器,不能实例化类
ZygoteInit.java:795行
原氢 2015-08-17
  • 打赏
  • 举报
回复
倒数第7、8行,no empty constructor 没有参数为空构造器,不能实例化类
小撇儿1992 2015-08-17
  • 打赏
  • 举报
回复
引用 2 楼 shenyuanqing 的回复:
倒数第7、8行,no empty constructor 没有参数为空构造器,不能实例化类
+1

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧