使用 Android 膨胀类片段时出错
Posted
技术标签:
【中文标题】使用 Android 膨胀类片段时出错【英文标题】:Error inflating class fragment with Android 【发布时间】:2014-04-11 22:01:39 【问题描述】:非常简单的演示,然后是 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_
android:layout_
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);
一个
这是我的 Mainfest ...所有这些都遵循 google Api.65465465465465465464* 55444444444444444444444444444444444444444444444444444444444444ssssssssssssssssssssssssssssssssssssssssssssssssssssdsad
<?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>
是我添加的 googl-play-severir 错了吗?
【问题讨论】:
尝试了很多方法,但都不起作用。谁能帮帮我? 发布您的Manifest.xml
文件。
@user3396562 按照我的回答尝试并根据我的评论进行更正
【参考方案1】:
你的logcat说的很清楚
Caused by: java.lang.IllegalStateException: 中的元数据标记 您应用的 AndroidManifest.xml 没有正确的值。
预期为 4242000,但发现为 0。您必须在元素中具有以下声明:
将 Google Play 服务版本添加到您应用的清单中
编辑应用程序的 AndroidManifest.xml 文件,并添加 元素内的以下声明。这嵌入的版本 编译应用时使用的 Google Play 服务。
你需要在<application>
标签下添加<meta-data>
到你的AndroidManifest.xml
....<application>
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
这是因为最新的 google play 服务需要一个版本名称,在 AndroidManifest.xml
中使用 <meta-data .. />
提及
也改变这个
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_
android:layout_
android:name="com.google.android.gms.maps.MapFragment"/>
到
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_
android:layout_
android:name="com.google.android.gms.maps.SupportMapFragment"/>
【讨论】:
在那之后我有 03-08 18:08:54.016: E/AndroidRuntime(1378): Caused by: android.app.Fragment$InstantiationException: Unable to instance fragment com.google.android.gms .SupportMapFragment:确保类名存在,是公共的,并且有一个公共的空构造函数 03-08 18:08:54.016: E/AndroidRuntime(1378): Caused by: java.lang.ClassNotFoundException: 找不到类路径上的“com.google.android.gms.SupportMapFragment”:DexPathList[[zip 文件“/data/app/ie.wit.bookbank-2.apk”],nativeLibraryDirectories=[/data/app-lib/ie.wit .bookbank-2, /system/lib]] 我错过了什么吗? @user3396562 您是否已将google_play_services_lib
添加到您的项目中?并发布您的 manifest.xml 文件
@user3396562 我有你的问题。我认为您在android:name="com.google.android.gms.SupportMapFragment
正确 中写错了,例如android:name="com.google.android.gms.maps.SupportMapFragment
。这是错字。【参考方案2】:
原因:java.lang.IllegalStateException:你的元数据标签 应用程序的 AndroidManifest.xml 没有正确的值。预期的 4242000 但找到 0。您必须在其中有以下声明 元素:
确保您拥有更新的 google play 服务,即 rev 15
将以下内容添加为应用程序标记的子项,它应该可以工作
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
你也需要改变
android:name="com.google.android.gms.maps.MapFragment"/>
到
android:name="com.google.android.gms.maps.SupportMapFragment"/>
【讨论】:
在那之后我有 03-08 18:08:54.016: E/AndroidRuntime(1378): Caused by: android.app.Fragment$InstantiationException: Unable to instance fragment com.google.android.gms .SupportMapFragment:确保类名存在,是公共的,并且有一个公共的空构造函数 03-08 18:08:54.016: E/AndroidRuntime(1378): Caused by: java.lang.ClassNotFoundException: 找不到类路径上的“com.google.android.gms.SupportMapFragment”:DexPathList[[zip 文件“/data/app/ie.wit.bookbank-2.apk”],nativeLibraryDirectories=[/data/app-lib/ie.wi t.bookbank-2, /system/lib]] 我忘记导入一些东西了吗? 你有没有在你的安卓项目中引用过google play services library项目以上是关于使用 Android 膨胀类片段时出错的主要内容,如果未能解决你的问题,请参考以下文章
android.view.InflateException:二进制 XML 文件:膨胀类片段时出错
Android android.view.InflateException Binary XML 文件第 16 行:膨胀类片段时出错
android.view.InflateException 膨胀类片段时出错,二进制 XML 文件第 1 行?
android.view.InflateException:二进制 XML 文件第 15 行:二进制 XML 文件第 19 行:膨胀类片段时出错
Google Map API 问题:android.view.InflateException:二进制 XML 文件第 2 行:二进制 XML 文件第 2 行:膨胀类片段时出错