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 の位置が変更されたときにいくつかのマップ オーバーレイをリロードすることなので、GPS をセットアップして をonLocationChanged()呼び出しましたが、 を使用してクラス外でrunOverlaysAgain()使用する関数を呼び出すことはできません。これは、が使用するクラスにあり、MapActivity を使用するクラスにあるためです。したがって、基本的にから実行することはできません 。これを修正するにはどうすればよいですか? 以下は、エラーに記載されているように、2 行目は 141 行目です。findViewByIdActivityonLocationChanged()LocationListenerrunOverlaysAgain()findViewByIdLocationListenerrunOverlaysAgain()

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 を作成する方法のいずれかが必要になる可能性が 2 つあります。

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 に答える