android.view.InflateException:二进制XML文件行#13:错误膨胀类片段

时间:2014-03-13 17:04:33

标签: android eclipse google-maps google-maps-android-api-2

我在Eclipse工作了很长很长一段时间(3周)。使用谷歌地图android api v2的“入门”指南我一直遇到这个问题。除了在线阅读各种教程之外,我还尝试了各种各样的方法,从SO上的帖子开始这项工作。在youtube上,我仍然无法使其正常运行。我已经使用了Activity,FragmentActivity,在片段中添加了名称,并且仍然存在使类片段膨胀的错误。

主要错误(LogCat中最顶层的错误)

03-12 11:50:04.793: E/AndroidRuntime(9002): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.map2/com.example.map2.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment

MainActivty.java(我已尝试过Activity& FragmentActivity)

package com.example.map2;

import android.os.Bundle;
//import android.app.Activity;
import android.view.Menu;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {

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


}

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

}

Activity_main.xml(我使用了MapFragment和amp; SupportMapFragment)

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/map"
    android:name="com.example.map2.MainActivity"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       class="com.google.android.gms.maps.SupportMapFragment"/>

Map2Manifest.xml

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="19" />

<permission
    android:name="com.example.map2.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.example.map2.permission.MAPS_RECEIVE" />


<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
    Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>



<application
    android:allowBackup="true"
    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="#" />

    <activity
        android:name="com.example.map2.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


</application>

图书馆设置的截图等:

enter image description here

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:2)

你有

android:minSdkVersion="13"

因此,您需要使用MapFragment并扩展Activity

更改此

class="com.google.android.gms.maps.SupportMapFragment"/>

class="com.google.android.gms.maps.MapFragment"/>

并改变这个

public class MainActivity extends FragmentActivity {

public class MainActivity extends Activity {

还将metag误认为是应用程序标记的子项

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

答案 1 :(得分:1)

此: <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="#" /> 应该就在此之前:</application> 这可能无法解决您的问题,但可能会导致另一个问题。

另外,如果这是您的整个清单文件,那么您错过了另一个<meta-data><meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

答案 2 :(得分:0)

我按照谷歌地图Android API V2教程,我有与你相同的代码。我遇到了这个问题,我已经解决了。
如果你想在android api中创建Google Map&lt; 11,你应该保持你的活动和你的布局。您必须添加添加 在你的Android Android Manifest文件上。       

&lt;元数据
            机器人:名称=&#34; com.google.android.gms.version&#34;
            机器人:值=&#34; @整数/ GOOGLE_PLAY_SERVICES_VERSION&#34; /&GT;

这是我的Android清单文件

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.demogooglemap"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <permission
        android:name="com.example.demogooglemap.permision.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.demogooglemap.permision.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyCpDUn3K-IJJxqTmR4qIsNHGgNdqF7YmV0" />

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

希望得到这个帮助。

答案 3 :(得分:0)

希望有人会觉得它很有用。 我遇到了同样的问题并尝试了一些修复,但没有任何效果。我解决了它如下。 1)我使用的是Android 2.1.2。 2)我使用自动片段创建方法创建片段,如图所示 this screen shot。 3)每次运行程序时都会出现同样的错误。

- &GT;的解决方案

  • 我分别为我的片段创建了java类和XML文件 以下。 Java Class Screenshot

    同样,我为片段创建了一个新的布局文件。

在我新创建的java类中执行了以下操作。

package com.example.shaoorjan.fragmentxml;

  import android.app.Fragment;
  import android.os.Bundle;
  import android.support.annotation.Nullable;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;


   public class BlankFragment extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,      Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_blank,container,false);
}
 }

一切正常。