我一直在试图找出这个错误的原因:
>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 的位置发生变化时重新加载一些地图叠加层,所以我设置并onLocationChanged()
调用了 GPS runOverlaysAgain()
,但是我不能调用在findViewById
类之外使用的函数Activity
。这是因为onLocationChanged()
在使用 MapActivity 的类中LocationListener
,并且runOverlaysAgain()
在使用 MapActivity 的类中。所以基本上findViewById
不能从中运行 LocationListener
,我将如何解决这个问题?下面是runOverlaysAgain()
第二行是错误中提到的第 141 行:
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";
}
很多重新声明只是我试图弄清楚发生了什么,没有占上风。它们可以被删除,并且将再次生成类似的错误。所以我需要做两件事,要么如何修复这个错误,要么如何在 onCreate() 之外创建 mapOverlays。
这是 XML:
<Button
android:id="@+id/readWebpage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="readWebpage"
android:text="Load Webpage" >
</Button>
<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"
android:apiKey="0IhkxetuKVA3ujGbdU8kltq8tCDodiOrV-92Low"/>
<TextView
android:id="@+id/TextView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Example Text" >
</TextView>
</LinearLayout>
任何帮助表示赞赏,谢谢。