0

我一直在试图找出这个错误的原因:

>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> 

任何帮助表示赞赏,谢谢。

4

1 回答 1

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) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
于 2012-07-13T14:12:27.430 回答