我一直试图找出导致此错误的原因:
>07-13 23:44:06.715: E/AndroidRuntime(2932): FATAL EXCEPTION: main
07-13 23:44:06.715: E/AndroidRuntime(2932): java.lang.NullPointerException
07-13 23:44:06.715: E/AndroidRuntime(2932): at android.app.Activity.findViewById(Activity.java:1825)
07-13 23:44:06.715: E/AndroidRuntime(2932): at com.example.usignasync.MainActivity.runOverlaysAgain(MainActivity.java:141)
我的目标是在GPS位置发生变化时重新加载一些地图叠加层,因此我设置了GPS并onLocationChanged()
调用了runOverlaysAgain()
,但我无法调用使用{使用findViewById
的课程之外的{1}}。这是因为Activity
位于使用onLocationChanged()
的类中,而LocationListener
位于使用MapActivity的类中。所以基本上runOverlaysAgain()
无法从findViewById
运行,我该如何解决这个问题?下面是LocationListener
,第二行是第141行,如错误中所述:
runOverlaysAgain()
许多重新声明只是我试图弄清楚发生了什么,并没有占上风。可以删除它们,并再次生成类似的错误。因此,我需要两个可能的事情,如何修复此错误或如何在onCreate()之外创建mapOverlays。
这是XML:
protected void runOverlaysAgain(){
mapView = (MapView) findViewById(R.id.mapview);
mapOverlays = mapView.getOverlays();
Log.d("A", Integer.toString(mapOverlays.size()));
mapOverlays.clear();
String latitude;
String longitude;
if(lastKnownLocation!=null){
latitude = GPSTracker.yourLocation.substring(3,GPSTracker.yourLocation.indexOf("Long"));
longitude = GPSTracker.yourLocation.substring(GPSTracker.yourLocation.indexOf("Long")+4, GPSTracker.yourLocation.length());
}
else{
latitude="92000";
longitude ="92000";
}
感谢任何帮助,谢谢。
答案 0 :(得分:0)
首先授予此权限
然后在res / layout / main.xml中以这种方式声明mapview
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
/>
然后在您的主要活动中调用mapview,如下所示
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);