2017-08-29 10 views
0

私は、このガイドを使用します。 https://developers.google.com/maps/documentation/android-api/AndroidのGoogleマップフラグメントエラー

をしかし、それは動作しません、私はGoogleのコンソールでAPIキーを登録して、マニフェストに追加している、私はマニフェストの許可に追加します。

これはMapsActivityです:

package aimprogman.mustwork; 

import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 


/** 
* Manipulates the map once available. 
* This callback is triggered when the map is ready to be used. 
* This is where we can add markers or lines, add listeners or move the camera. In this case, 
* we just add a marker near Sydney, Australia. 
* If Google Play services is not installed on the device, the user will be prompted to install 
* it inside the SupportMapFragment. This method will only be triggered once the user has 
* installed Google Play services and returned to the app. 
*/ 
@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
    } 
} 

これは

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:map="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/map" 
android:name="com.google.android.gms.maps.SupportMapFragment" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 

activity_maps.xmlである。しかし、それは動作しませんし、ショーのエラー:

08-29 10:51:01.767 15491-15491/aimprogman.mustwork E/AndroidRuntime: FATAL EXCEPTION: main 
                   Process: aimprogman.mustwork, PID: 15491 
                   java.lang.RuntimeException: Unable to start activity ComponentInfo{aimprogman.mustwork/aimprogman.mustwork.MapsActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class fragment 
                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658) 
                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 
                    at android.app.ActivityThread.access$900(ActivityThread.java:172) 
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                    at android.os.Looper.loop(Looper.java:145) 
                    at android.app.ActivityThread.main(ActivityThread.java:5832) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at java.lang.reflect.Method.invoke(Method.java:372) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                    at 
+0

問題はあなたのXMLファイルにあります。この行を追加して<?xml version = "1.0" encoding = "utf-8"を試してください>> –

+0

@JRamesh私はこの行を追加しますが、動作しません、私の問題は解決しません – aimprogman

答えて

0

私は申し訳ありませんが、私は逃しましたadd

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

それはOnCreate関数で以下のように開始するあなたのXMLで感謝

0

があなたの活動には以下のコード

<com.google.android.gms.maps.MapView 
     android:id="@+id/mapView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

を使用し、作業の罰金です -

mMapView = (MapView) rootView.findViewById(R.id.mapView); 
    mMapView.onCreate(savedInstanceState); 
    try { 
     MapsInitializer.initialize(this); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
mMapView.getMapAsync(this); 

また、これは初期化の方法です。マップを作成し、すべてのデバイスでうまく動作します。

あなたのマップにマップフラグメントを使用したい場合は、マニフェストを表示して、そこに何かを見逃しているかどうかを確認してください。

+0