xmlのレイアウトに、Unknown fragmentsが出ています。
また、AndroidMonitorでは、一行目がおかしいと言っています。
APIキーにつきましては、取得し、Manifest.xmlとgoogle_maps_api.xmlの設定は終えています。初期状態のコードでは、mapを取得できていたので、問題はないと思います。
どうすれば、Unknown fragmentsや、Binary XML file line #1: Error inflating class fragmentを解決できるでしょうか?アドバイスをいただきたいです。よろしくお願いします。
java
1<?xml version="1.0" encoding="utf-8"?> 2<fragment xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:map="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:id="@+id/map" 6 android:name="com.google.android.gms.maps.SupportMapFragment" 7 android:layout_width="match_parent" 8 android:layout_height="match_parent" 9 tools:context="com.example.android.sample.near.LocationActivity" />
この下のjavaのコードでは、
LocationActivity内での画面変更で、activity_main.xmlからactivity_map.xmlに変更して、mapを開いた時に、すでにlatitude、longitude(緯度経度)が取得してある場合は、その地点を表示し、取得されていない場合は、渋谷の緯度経度をセットします。
また、mapの上でLongClickをするとピンがたち、その地点の緯度経度をlatitude2、longitude2に代入します。
java
1//onStart(){}//のなかです。supinnerで、mapで検索がclickされた時に呼び出されます。ここで、サンプルコードでは、onCreateで行われていたことを行います。 2public class LocationActivity extends FragmentActivity implements 3 GoogleApiClient.ConnectionCallbacks, 4 GoogleApiClient.OnConnectionFailedListener, 5 LocationListener,OnMapReadyCallback,GoogleMap.OnMapLongClickListener { 6 7//onCreate()には、mapに関するコードがないため、mapのSpinnerのelse ifまで省略 8 } else if (item.equals("googlemapで検索")) { 9 10 setContentView(R.layout.activity_maps); 11//ここで、developersでonCreateで行われていた作業 12 SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 13 .findFragmentById(R.id.map); 14 mapFragment.getMapAsync(LocationActivity.this); 15 }
java
1//mapの初期値のsetや、LongClickの対応のメソッドです。 2private GoogleMap mMap; 3 4 @Override 5 public void onMapReady(GoogleMap googleMap) { 6 mMap = googleMap; 7 8 String activity = getIntent().getStringExtra("Activity"); 9 if (activity.equals("1")) {//MainActivityからintentに1がsetされてた場合は、GPSを使っている。 10 LatLng now = new LatLng(latitude, longitude);//GPSで取得した現在地をset 11 mMap.addMarker(new MarkerOptions().position(now).title("You are here")); 12 mMap.moveCamera(CameraUpdateFactory.newLatLng(now));//カメラのズームをセット 13 CameraUpdate cUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 12); 14 mMap.moveCamera(cUpdate); 15 } else if (activity.equals("2")) {//2がsetされてた場合は、GPSを使えない。 16 LatLng shibuya = new LatLng(35, 139);//渋谷をセット 17 mMap.addMarker(new MarkerOptions().position(shibuya).title("Marker in Shibuya")); 18 mMap.moveCamera(CameraUpdateFactory.newLatLng(shibuya)); 19 CameraUpdate cUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(35, 139),//カメラのズームをセット 12); 20 mMap.moveCamera(cUpdate); 21 } 22 23 setContentView(R.layout.activity_maps); 24 MapFragment map = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 25 map.getMapAsync(this); 26 27 // 各種コールバック 28 googleMap.setOnMapLongClickListener(this); 29 } 30 @Override 31 public void onMapLongClick(LatLng latLng) {//長押しされた場合 32 mMap.addMarker(new MarkerOptions().title("LongClick").position(latLng).draggable(false)); 33 34 Log.i("MapTest", "LongClick:" + latLng.latitude + "," + latLng.longitude); 35 36 //長押し検知されたら、 37 latitude2 = latLng.latitude;//緯度を取得 38 latitude2 = latLng.latitude;//経度を取得 39 select(latitude2,longitude2);//この地点の情報を取得 40 41 42 } 43
java
1//AndroidMonitorのエラーです。一行目がおかしいとのことですが、原因がわかりません。developersを見ろとのエラーメッセージもありますが、developersを見て、このコードを作りました。 2 FATAL EXCEPTION: main 3 android.view.InflateException: Binary XML file line #1: Error inflating class fragment 4 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 5 at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 6 7//途中は字数のため省略しました at android.app.Activity.setContentView(Activity.java:1867) 8 at com.example.android.sample.near.LocationActivity.onMapReady(LocationActivity.java:634) 9 at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source) 10 at com.google.android.gms.maps.internal.zzt$zza.onTransact(Unknown Source) 11 at android.os.Binder.transact(Binder.java:326) 12 at com.google.android.gms.maps.internal.bw.a(:com.google.android.gms.DynamiteModulesB:82) 13 at com.google.maps.api.android.lib6.impl.bf.run(:com.google.android.gms.DynamiteModulesB:1805) 14 at android.os.Handler.handleCallback(Handler.java:615) 15 at android.os.Handler.dispatchMessage(Handler.java:92) 16 at android.os.Looper.loop(Looper.java:213) 17 at android.app.ActivityThread.main(ActivityThread.java:4786) 18 at java.lang.reflect.Method.invokeNative(Native Method) 19 at java.lang.reflect.Method.invoke(Method.java:511) 20 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 21 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 22 at dalvik.system.NativeStart.main(Native Method) 2305-02 13:33:56.211 21995-22414/com.example.sample.near E/Google Maps Android API: Authorization failure. Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map. 2405-02 13:33:56.211 21995-22414/com.example.sample.near E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com) 25 Ensure that the "Google Maps Android API v2" is enabled. 26 Ensure that the following Android Key exists:
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。