整了四五天显示的地图终于不是北京了,心酸泪一把T~T。
java.lang.NullPointerException 是空指针异常,问候了度娘,又看了几遍自己的代码都没觉得有异常, 突发奇想的改了改代码竟然成了。。。。。
(下面是改完后的代码)
1 public class Local_MainActivity extends Activity { 2 private MapView mapView; 3 private BaiduMap baiduMap; 4 private LocationManager locationManager; 5 private String provider; 6 private boolean isFristLoacte=true; 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 SDKInitializer.initialize(getApplicationContext()); 12 setContentView(R.layout.local); 13 14 //百度地图 15 16 this.mapView = (MapView) findViewById(R.id.map_view); 17 this.baiduMap = this.mapView.getMap(); 18 this.locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); 19 //获取所有可用的地址提供器 20 List<String> providerList; 21 providerList=this.locationManager.getProviders(true); 22 if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { 23 provider = LocationManager.NETWORK_PROVIDER; 24 System.out.println(); 25 System.out.println("network!!!!!!!!!!!!!!!!!"); 26 } else if (providerList.contains(LocationManager.GPS_PROVIDER)) { 27 this.provider = LocationManager.GPS_PROVIDER; 28 System.out.println(); 29 System.out.println("GPS!!!!!!!!!!!!!!!!!"); 30 } 31 else { 32 Toast.makeText(this, "No location provider to use", Toast.LENGTH_SHORT).show(); 33 return; 34 } 35 36 try { 37 Location location = this.locationManager.getLastKnownLocation(this.provider); 38 // location = this.locationManager.getLastKnownLocation(this.locationManager.GPS_PROVIDER); 39 if (location != null) { 40 navigateTo(location); 41 } 42 this.locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); 43 }catch(Exception e){ 44 System.out.println(e); 45 } 46 47 } 48 /* @Override 49 protected void onDestroy(){ 50 super.onDestroy();ffffr 51 mapView.onDestroy(); 52 } 53 @Override 54 protected void onPause(){ 55 super.onPause(); 56 mapView.onPause(); 57 } 58 @Override 59 protected void onResume(){ 60 super.onResume(); 61 mapView.onResume(); 62 }*/ 63 64 private void navigateTo(Location location){ 65 if (isFristLoacte){ 66 LatLng ll=new LatLng(location.getLatitude(),location.getLongitude()); 67 MapStatusUpdate update= MapStatusUpdateFactory.newLatLng(ll); 68 baiduMap.animateMapStatus(update); 69 update=MapStatusUpdateFactory.zoomTo(16f); 70 baiduMap.animateMapStatus(update); 71 isFristLoacte=false; 72 } 73 } 74 75 @Override 76 public boolean onCreateOptionsMenu(Menu menu) { 77 // Inflate the menu; this adds items to the action bar if it is present. 78 getMenuInflater().inflate(R.menu.menu_main, menu); 79 return true; 80 } 81 82 @Override 83 public boolean onOptionsItemSelected(MenuItem item) { 84 // Handle action bar item clicks here. The action bar will 85 // automatically handle clicks on the Home/Up button, so long 86 // as you specify a parent activity in AndroidManifest.xml. 87 int id = item.getItemId(); 88 89 //noinspection SimplifiableIfStatement 90 if (id == R.id.action_settings) { 91 return true; 92 } 93 94 return super.onOptionsItemSelected(item); 95 } 96 LocationListener locationListener=new LocationListener() { 97 @Override 98 public void onLocationChanged(Location location) { 99 if (location!=null){ 100 navigateTo(location); 101 } 102 } 103 104 @Override 105 public void onStatusChanged(String provider, int status, Bundle extras) { 106 107 } 108 109 @Override 110 public void onProviderEnabled(String provider) { 111 112 } 113 114 @Override 115 public void onProviderDisabled(String provider) { 116 117 } 118 }; 119 @Override 120 protected void onDestroy(){ 121 super.onDestroy(); 122 mapView.onDestroy(); 123 if(this.locationManager!=null){ 124 try{ 125 this.locationManager.removeUpdates(locationListener); 126 }catch(Exception ex){} 127 128 } 129 } 130 @Override 131 protected void onPause(){ 132 super.onPause(); 133 mapView.onPause(); 134 } 135 @Override 136 protected void onResume(){ 137 super.onResume(); 138 mapView.onResume(); 139 } 140 141 }
之前是因为22-33的代码是这样写的
if (providerList.contains(LocationManager.GPS_PROVIDER)) { this.provider = LocationManager.GPS_PROVIDER; System.out.println(); System.out.println("GPS!!!!!!!!!!!!!!!!!"); }else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) {
provider = LocationManager.NETWORK_PROVIDER; System.out.println(); System.out.println("network!!!!!!!!!!!!!!!!!"); } else else { Toast.makeText(this, "No location provider to use", Toast.LENGTH_SHORT).show(); return; }
if跟else if 对调了以下
不要问我为什么
反正就是行了