无论我在Android中做什么,MapView都将为空。可能是什么错误?
这是我的位置活动:无论我在Android中做什么,MapView都将为空。可能是什么错误?,android,google-maps,android-mapview,Android,Google Maps,Android Mapview,这是我的位置活动: public class LocationActivity extends MapActivity{ GeoPoint p; Bundle bundle; ArrayList <String> address = new ArrayList<String>(); MapController mc; private LocationManager locationManager; public
public class LocationActivity extends MapActivity{
GeoPoint p;
Bundle bundle;
ArrayList <String> address = new ArrayList<String>();
MapController mc;
private LocationManager locationManager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
MapView mapView = (MapView)findViewById(R.id.mapView1);
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
// criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
String strLocationProvider = lm.getBestProvider(criteria, true);
Location location = lm.getLastKnownLocation(strLocationProvider);
if (location == null)
{
Toast.makeText(LocationActivity.this, "working", Toast.LENGTH_LONG);
}
double lat = (double) location.getLongitude();
double lon = (double) location.getLatitude();
p = new GeoPoint(
(int) (lat * 1E6),
(int) (lon * 1E6));
mc = mapView1.getController();
// mc.setCenter(new GeoPoint(29450116, 77312191));
mc.animateTo(p);
mapView1.setClickable(true);
mapView1.setBuiltInZoomControls(true);
mapView1.setSatellite(true);
mapView1.setTraffic(true);
mapView1.invalidate();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
公共类LocationActivity扩展了MapActivity{
地质点p;
束;
ArrayList地址=新的ArrayList();
地图控制器;
私人场所经理场所经理;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
MapView MapView=(MapView)findViewById(R.id.mapView1);
LocationManager lm=(LocationManager)getSystemService(Context.LOCATION\u服务);
标准=新标准();
//标准.设定准确度(标准.准确度/精细度);
标准。setAltitudeRequired(false);
标准。需要设置(假);
条件.setCostAllowed(true);
字符串strLocationProvider=lm.getBestProvider(条件为true);
位置=lm.getLastKnownLocation(strLocationProvider);
if(位置==null)
{
Toast.makeText(LocationActivity.this,“working”,Toast.LENGTH\u LONG);
}
double lat=(double)location.getLongitude();
double lon=(double)location.getLatitude();
p=新的地质点(
(内部)(纬度*1E6),
(int)(lon*1E6));
mc=mapView1.getController();
//mc.设置中心(新地质点(2945011677312191));
司马迁(p),;
mapView1.可设置可点击(真);
mapView1.SetBuilTinZoomControl(真);
mapView1.设置卫星(真);
mapView1.setTraffic(真);
mapView1.invalidate();
}
@凌驾
受保护的布尔值isRouteDisplayed(){
//TODO自动生成的方法存根
返回false;
}
}
这是我的map.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.google.android.maps.MapView
android:id="@+id/mapView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:enabled="true"
android:clickable="true"
android:apiKey="04KR0_lkSRZxCk_JC9yIkk50f3ZE_JjBT7HJ6jw"
/>
<Button
android:text="Add Location"
android:id="@+id/mapButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</RelativeLayout>
我已经清理了我的项目。创建了一个新的布局来检查它是否工作,但我的MapView仍然为空,并且我得到了一个空指针异常。可能出现什么错误?看起来您正在分配给mapView,但使用的是mapView1
// Assigning the value to mapView
MapView mapView = (MapView)findViewById(R.id.mapView1);
// accessing mapView1
mc = mapView1.getController(); // Is this generating the NPE?
希望这有助于…检查
投掷
IllegalArgumentException,如果提供程序为null或不存在
您必须使用try catch块:
mc = mapView.getController();
try {
Location location = lm.getLastKnownLocation(strLocationProvider);
if (location != null) {
double lat = (double) location.getLongitude();
double lon = (double) location.getLatitude();
p = new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));
mc.animateTo(p);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
根据您的标准找不到提供商,您必须对其进行调整。我同意px3j;如果已切换
MapView MapView=(MapView)findViewById(R.id.mapView1)代码>至MapView mapView1=(MapView)findViewById(R.id.mapView1)代码>请更新您的问题 你能清楚地告诉我们哪一行抛出了NullPointerException吗。也请发布您的日志。这是我的错误:mc=mapView1.getController();问题很可能是findViewByID没有找到视图。此方法返回null,而不是引发异常。在此行放置断点,并在调用后检查mapView。它是空的吗?如果是,请发布活动的整个XML。还要确保您在清单文件中设置了INTERNET和ACCESS\u FINE\u位置权限。也