问题描述
我尝试添加谷歌地图API第2版中我的application.but我得到异常。例外的是
了java.lang.RuntimeException:无法启动活动ComponentInfo {info.androidhive.googlemapsv2 / info.androidhive.googlemapsv2.MainActivity}:android.view.InflateException:二进制XML文件中的行# 5:错误充气类片段
下面是我的XML类
< XML版本=1.0编码=UTF-8&GT?;
< RelativeLayout的的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT>
<片段
机器人:ID =@ + ID /图
机器人:名称=com.google.android.gms.maps.MapFragment
机器人:layout_width =match_parent
机器人:layout_height =match_parent/>
< / RelativeLayout的>
这是我的主类
公共类MainActivity延伸活动{
私人GoogleMap的_googleMap = NULL;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
尝试
{
//加载地图
initilizeMap();
_googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
_googleMap.setMyLocationEnabled(真正的);
}赶上(例外五){
e.printStackTrace();
}
}
私人无效initilizeMap(){
如果(_googleMap == NULL)
{
_googleMap =((MapFragment)getFragmentManager()findFragmentById(R.id.map)。)的GetMap()。
如果(_googleMap == NULL){
Toast.makeText(getApplicationContext(),
对不起!无法创建地图,Toast.LENGTH_SHORT)
。显示();
}
}
}
@覆盖
保护无效onResume(){
// TODO自动生成方法存根
super.onResume();
initilizeMap();
}
}
这是我的logcat
01-31 14:20:55.603:E / AndroidRuntime(311):致命异常:主要
01-31 14:20:55.603:E / AndroidRuntime(311):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.example.demo / com.example.demo.MainActivity}:android.view.InflateException:二进制XML文件,6号线:错误充气类片段
01-31 14:20:55.603:E / AndroidRuntime(311):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.app.ActivityThread.access $ 2300(ActivityThread.java:125)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.os.Handler.dispatchMessage(Handler.java:99)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.os.Looper.loop(Looper.java:123)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.app.ActivityThread.main(ActivityThread.java:4627)
01-31 14:20:55.603:E / AndroidRuntime(311):在java.lang.reflect.Method.invokeNative(本机方法)
01-31 14:20:55.603:E / AndroidRuntime(311):在java.lang.reflect.Method.invoke(Method.java:521)
01-31 14:20:55.603:E / AndroidRuntime(311):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
01-31 14:20:55.603:E / AndroidRuntime(311):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-31 14:20:55.603:E / AndroidRuntime(311):在dalvik.system.NativeStart.main(本机方法)
01-31 14:20:55.603:E / AndroidRuntime(311):android.view.InflateException:二进制XML文件,6号线:错误充气类片段产生的原因
01-31 14:20:55.603:E / AndroidRuntime(311):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.view.LayoutInflater.inflate(LayoutInflater.java:407)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.view.LayoutInflater.inflate(LayoutInflater.java:276)
01-31 14:20:55.603:E / AndroidRuntime(311):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.app.Activity.setContentView(Activity.java:1647)
01-31 14:20:55.603:E / AndroidRuntime(311):在com.example.demo.MainActivity.onCreate(MainActivity.java:22)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-31 14:20:55.603:E / AndroidRuntime(311):11 ...更多
01-31 14:20:55.603:E / AndroidRuntime(311):抛出java.lang.ClassNotFoundException:产生的原因android.view.fragment装载机dalvik.system.PathClassLoader [/data/app/com.example.demo-2 apk文件]
01-31 14:20:55.603:E / AndroidRuntime(311):在dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
01-31 14:20:55.603:E / AndroidRuntime(311):在java.lang.ClassLoader.loadClass(ClassLoader.java:573)
01-31 14:20:55.603:E / AndroidRuntime(311):在java.lang.ClassLoader.loadClass(ClassLoader.java:532)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.view.LayoutInflater.createView(LayoutInflater.java:466)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.view.LayoutInflater.onCreateView(LayoutInflater.java:544)
01-31 14:20:55.603:E / AndroidRuntime(311):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
01-31 14:20:55.603:E / AndroidRuntime(311):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
您应该使用 SupportMapFragment
而不是 MapFragment
修改
<片段
机器人:ID =@ + ID /图
机器人:名称=com.google.android.gms.maps.MapFragment
机器人:layout_width =match_parent
机器人:layout_height =match_parent/>
到
<片段
机器人:ID =@ + ID /图
机器人:名称=com.google.android.gms.maps.SupportMapFragment
机器人:layout_width =match_parent
机器人:layout_height =match_parent/>
也改变
_googleMap =((MapFragment)getFragmentManager()findFragmentById(R.id.map)。)的GetMap()。
到
_googleMap =((SupportMapFragment)getSupportFragmentManager()。findFragmentById(
R.id.map))的GetMap()。
和另外如果你使用的是碎片的旧设备(pre蜂窝),你应该始终扩展你的活动
从 FragmentActivity
。
,并检查
添加了谷歌播放服务版本的应用程序的清单
您只需要添加<元数据>
在<应用>
标签到你的的AndroidManifest.xml
...<应用>
<元数据的android:NAME =com.google.android.gms.version
机器人:值=@整数/ google_play_services_version/>
< /用途>
这是因为最新的谷歌播放服务需要一个版本名称,这是使用&LT被提及;元数据.. />里面的AndroidManifest.xml
I am try to add Google MAP Api v2 in my application.but I am getting exception. Exception is
java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.googlemapsv2/info.androidhive.googlemapsv2.MainActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class fragment
Here is my xml class
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
this is my main class
public class MainActivity extends Activity {
private GoogleMap _googleMap=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try
{
//loading map
initilizeMap();
_googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
_googleMap.setMyLocationEnabled(true);
} catch (Exception e) {
e.printStackTrace();
}
}
private void initilizeMap() {
if(_googleMap==null)
{
_googleMap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
if (_googleMap == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
initilizeMap();
}
}
this is my logcat
01-31 14:20:55.603: E/AndroidRuntime(311): FATAL EXCEPTION: main
01-31 14:20:55.603: E/AndroidRuntime(311): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo/com.example.demo.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.os.Handler.dispatchMessage(Handler.java:99)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.os.Looper.loop(Looper.java:123)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-31 14:20:55.603: E/AndroidRuntime(311): at java.lang.reflect.Method.invokeNative(Native Method)
01-31 14:20:55.603: E/AndroidRuntime(311): at java.lang.reflect.Method.invoke(Method.java:521)
01-31 14:20:55.603: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-31 14:20:55.603: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-31 14:20:55.603: E/AndroidRuntime(311): at dalvik.system.NativeStart.main(Native Method)
01-31 14:20:55.603: E/AndroidRuntime(311): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
01-31 14:20:55.603: E/AndroidRuntime(311): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.Activity.setContentView(Activity.java:1647)
01-31 14:20:55.603: E/AndroidRuntime(311): at com.example.demo.MainActivity.onCreate(MainActivity.java:22)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-31 14:20:55.603: E/AndroidRuntime(311): ... 11 more
01-31 14:20:55.603: E/AndroidRuntime(311): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.example.demo-2.apk]
01-31 14:20:55.603: E/AndroidRuntime(311): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
01-31 14:20:55.603: E/AndroidRuntime(311): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
01-31 14:20:55.603: E/AndroidRuntime(311): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.createView(LayoutInflater.java:466)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:544)
01-31 14:20:55.603: E/AndroidRuntime(311): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
You should use SupportMapFragment
instead of MapFragment
.
Change
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
to
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Also change
_googleMap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
to
_googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.map)).getMap();
And also If you're using fragments on older devices (pre Honeycomb) you should always extend your Activity
from FragmentActivity
.
and also check
Add the Google Play services version to your app's manifest
You just 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
这篇关于Android的谷歌地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!