0

Google マップ v2 を使用してアプリを実行しようとしていますが、Logcat に次のエラーが表示されます。

致命的な例外: main java.lang.RuntimeException: アクティビティ ComponentInfo{com.app.mapa/com.app.MapaLugares} を開始できません: android.view.InflatException: java.lang.NullPointerException

コードは次のとおりです。

activity_mapa_lugares.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

 <fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

 </LinearLayout>

MapaLugares.java

package com.app.mapa;

import android.os.Bundle;
import android.app.Activity; 
import android.graphics.Point;
import android.view.Menu;
import android.widget.Toast;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.Projection;
import com.google.android.gms.maps.model.LatLng;

public class MapaLugares extends FragmentActivity {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_mapa_lugares);

 mMap = ((MapFragment) getFragmentManager().findFragmentById (R.id.mapa)).
     getMap();

 mMap.setOnMapClickListener(new OnMapClickListener() {

    @Override
    public void onMapClick(LatLng point) {
      Projection proj = mMap.getProjection();
      Point coord = proj.toScreenLocation(point);

              Toast.makeText(MapaLugares.this, "Click\n" + "Lat: " + 
              point.latitude + "\n" + "Lng: "+ point.longitude+ "\n" + "X: "    
              + coord.x + " - Y: "+ coord.y, Toast.LENGTH_SHORT)
              .show();
        }

    });

}   

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.mapa_lugares, menu);
  return true;
}

}

どうしたの?

ありがとう。

4

1 に答える 1

1

XML ファイルでマップを次のタイプに設定しています: SupportMapFragment:

android:name="com.google.android.gms.maps.SupportMapFragment"

しかし、あなたのJavaコードでは、別のオブジェクトを取得しようとしています:

 mMap = ((MapFragment) getFragmentManager().findFragmentById (R.id.mapa)).
 getMap();

2 ここでの問題:

1.次のようにSupportMapFragmentand notをフェッチする必要があります。MapFragment

mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

2.間違った ID を取得しようとしています: XML でマップに次のように指定しました: `android:id="@+id/map"

コード内で取得しようとしている間:(R.id.mapa)これは間違ったIDです。

それらの問題を修正し、結果を教えてください。

また、私が Google Map API V2 について書いた次のブログ記事を読んで、Google Map API V2 を使用するアプリケーションを構築する方法についてより良いアイデアを得ることができます。

Google マップ API V2 ガイド

于 2013-04-14T21:49:07.660 に答える