二进制XML文件行#8:错误的膨胀类片段,谷歌地图

在这个应用程序中,我试图添加一个functionV2谷歌地图。 我已经看了大多数的教程创build一个活动,获得一个关键的地图,并创buildxml文件来尝试,看看我是否错过了任何一步(我经历了他们像4次),并没有好像我错过了任何一步。

这里是我使用的网站:

当我在手机上运行我的应用时(因为Google play服务在模拟器上不起作用),它给了我这两个错误:

02-11 22:10:54.690: E/AndroidRuntime(4526): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.ShowActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class fragment 02-11 22:10:54.690: E/AndroidRuntime(4526): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public 

这是我的活动:

 package com.example.myfirstapp; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; import com.google.android.maps.*; import com.google.android.gms.maps.MapFragment; public class ShowActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_map, menu); return true; } //@Override //protected boolean isRouteDisplayed() { // TODO Auto-generated method stub //return false; //} } 

对不起格式化,但这是我的XML文件:

 <RelativeLayout 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" tools:context=".ShowActivity" > <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment" /> </RelativeLayout> 

我已经导入了Google API和谷歌播放服务,所以所有的导入工作,这让我想知道为什么第二个错误说MapFragment是空的。 清单文件代码:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myfirstapp" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="com.example.myfirstapp.permission.MAPS_RECEIVE" /> <permission android:name="com.example.myfirstapp.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.myfirstapp.MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.default_searchable" android:value=".SearchResultsActivity" /> </activity> <activity android:name="com.example.myfirstapp.SearchResultsActivity" android:label="@string/title_activity_search_results" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity> <activity android:name="com.example.myfirstapp.AddContacts" android:label="@string/title_activity_add_contacts" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.myfirstapp.ContactActivity" android:label="@string/title_activity_contact" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.myfirstapp.DisplayInfo" android:label="@string/title_activity_display_info" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <provider android:name="com.example.myfirstapp.SomeProvider" android:authorities="com.example.myfirstapp.SomeProvider" > </provider> <activity android:name="com.example.myfirstapp.EditContacts" android:label="@string/title_activity_edit_contacts" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.myfirstapp.DeleteContact" android:label="@string/title_activity_delete_contact" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.myfirstapp.FlightInfo" android:label="@string/title_activity_flight_info" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.myfirstapp.EventInfo" android:label="@string/title_activity_event_info" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.myfirstapp.ContactsActivity" android:label="@string/title_activity_contacts" > </activity> <activity android:name="com.example.myfirstapp.ShowActivity" android:label="@string/title_activity_map" > </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="removed" /> <uses-library android:name="com.google.android.maps" /> </application> </manifest> 

Solutions Collecting From Web of "二进制XML文件行#8:错误的膨胀类片段,谷歌地图"

尝试下面的代码:

 public class ShowActivity extends android.support.v4.app.FragmentActivity { private GoogleMap mMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); setUpMapIfNeeded(); } @Override protected void onResume() { super.onResume(); setUpMapIfNeeded(); } private void setUpMapIfNeeded() { // Do a null check to confirm that we have not already instantiated the map. if (mMap == null) { // Try to obtain the map from the SupportMapFragment. mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { setUpMap(); } } } } 

XML文件代码:

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

清单文件代码:

  <permission android:name="com.example.myfirstapp.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.myfirstapp.permission.MAPS_RECEIVE"/> <!-- Copied from Google Maps Library/AndroidManifest.xml. --> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <!-- External storage for caching. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="removed" /> </application> 

我正在尝试在Android 2.3.4上部署Google Play Services V2(适用于Google地图function)。 (API等级10),我有同样的问题。 这是我如何解决它:

  1. google-play-services_lib必须被包含在一个库中。 在Eclipse中,你可以这样做,如下所示:

    • 使用Android SDKpipe理器来下载库。
    • 从现有代码创build一个新的Android项目 ,您可以在您用来安装SDK的文件夹中指向google-play-services_lib。 我用了一个级别(libproject)。
    • 项目 – >属性 – > Android中将这个项目标记为
    • 在你的项目中,打开Project – > Properties – > Android ,然后在库部分点击Add 。 selectgoogle-play-services_lib。 它将显示为com_google_android_gms。

    这一点很重要:请确保库的项目构build目标与应用程序所使用的相同。

  2. 由于API版本低于11,因此使用SupportMapFragment而不是MapFragment。

希望这可以帮助。 这至less要花三个小时才能完成。

我遵循以下步骤::

步骤1:在清单中包含以下行,确保您在应用程序标签内添加

  <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyA0YQoByyHKGbB2R3pSIerQCEiGlwieRas" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> 

防爆::

  <application android:name="taxialways.user.MyApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="taxialways.user.Register" android:label="@string/title_activity_register" android:noHistory="true" android:screenOrientation="portrait" > </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyA0YQoByyHKGbB2R3pSIerQCEiGlwieRas" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> 

第2步:确保您的活动扩展了FragmentActivity


第3步:xml使用下面的mapFragment元素

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

在清单中添加以下行

 <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />