简体   繁体   中英

Error inflating class fragment with Android

Very easy demo followed by Google Api

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

Location.java

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

public class Location extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);
    }
}

a

This is my Mainfest ...All of this follow by google Api.65465465465465465464* 55444444444444444444444444444444444444444444444444444444444444sssssssssssssssssssssssssssssssssadasdsad

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ie.wit.bookbank"
android:versionCode="1"
android:versionName="1.0" >
 <uses-permission android:name="ie.wit.bookbank.permission.MAPS_RECEIVE" />
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />
<!-- camera -->
<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<!-- map -->
<permission
    android:name="ie.wit.bookbank.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />


<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.maps.v2.API_KEY"
        android:value="AIzaSyBrbh8Oa3az6rjBtcYUEZfQLrkKiOR5vUU" />

    <activity
        android:name="ie.wit.bookbank.Newbook"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="ie.wit.bookbank.Location"
        android:label="@string/app_name" >

    </activity>
</application>

</manifest>

Is that I add googl- play- severir wrong ?

Your logcat clearly said

Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.

Expected 4242000 but found 0. You must have the following declaration within the element:

Add the Google Play services version to your app's manifest

Edit your application's AndroidManifest.xml file, and add the following declaration within the element. This embeds the version of Google Play services that the app was compiled with.

You need to add <meta-data> under <application> tag into your AndroidManifest.xml

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

This is because latest google play services requires a version name, which is to be mentioned using <meta-data .. /> inside AndroidManifest.xml

and also change this

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

to

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

Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4242000 but found 0. You must have the following declaration within the element:

Make sure you have the updated google play services which is rev 15

Add the below as a child of application tag and it should work

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

You also need to change

android:name="com.google.android.gms.maps.MapFragment"/>

to

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM