2013-01-06 126 views
0

当我跑我的申请,我得到这个错误:布局不膨胀correclty

01-06 15:00:42.865: E/AndroidRuntime(24230): FATAL EXCEPTION: main 
01-06 15:00:42.865: E/AndroidRuntime(24230): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fotolife.app/com.fotolife.app.MainView}: android.view.InflateException: Binary XML file line #8: Error inflating class com.google.android.maps.MapView 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.app.ActivityThread.access$600(ActivityThread.java:140) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.os.Looper.loop(Looper.java:137) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.app.ActivityThread.main(ActivityThread.java:4898) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at java.lang.reflect.Method.invokeNative(Native Method) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at java.lang.reflect.Method.invoke(Method.java:511) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at dalvik.system.NativeStart.main(Native Method) 
01-06 15:00:42.865: E/AndroidRuntime(24230): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.google.android.maps.MapView 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at com.fotolife.app.Map.onCreateView(Map.java:12) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:871) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:523) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.app.Activity.performStart(Activity.java:5201) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2073) 
01-06 15:00:42.865: E/AndroidRuntime(24230): ... 11 more 
01-06 15:00:42.865: E/AndroidRuntime(24230): Caused by: java.lang.reflect.InvocationTargetException 
01-06 15:00:42.865: E/AndroidRuntime(24230): at java.lang.reflect.Constructor.constructNative(Native Method) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
01-06 15:00:42.865: E/AndroidRuntime(24230): ... 24 more 
01-06 15:00:42.865: E/AndroidRuntime(24230): Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity. 
01-06 15:00:42.865: E/AndroidRuntime(24230): at com.google.android.maps.MapView.<init>(MapView.java:291) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at com.google.android.maps.MapView.<init>(MapView.java:264) 
01-06 15:00:42.865: E/AndroidRuntime(24230): at com.google.android.maps.MapView.<init>(MapView.java:247) 
01-06 15:00:42.865: E/AndroidRuntime(24230): ... 27 more 

它说的错误是在这个文件的第12行:

package com.fotolife.app; 

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

public class Map extends Fragment { 

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

} 

第12行是:回归inflater.inflate .....

,这里是该片段是应该充气xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <com.google.android.maps.MapView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:enabled="true" 
     android:clickable="true" 
     android:apiKey="@string/maps_api_key" 
     /> 

</LinearLayout> 

回答

1

这是你的错误:

01-06 15:00:42.865: E/AndroidRuntime(24230): Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.

不能使用MapView与片段,因为使用片段您的活动必须是Activity(V11 +)或FragmentActivity的子类,而是利用MapView您的活动必须是MapActivity一个子类。

如果您想同时使用地图和片段,则需要使用包含MapFragment(v11 +)或SupportMapFragmentGoogle Play Services Maps API

+0

SupportMapFragment修复了它!非常感谢! – user1513687

0

我以前从未使用过的谷歌地图API的Android,但看着你的堆栈跟踪:

01-06 15:00:42.865: E/AndroidRuntime(24230): Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity. 

你的活动需要延伸MapActivity。如果你想使用片段,也许你应该使用新的V2 API。 https://developers.google.com/maps/documentation/android/

当你的布局只包含一个MapView,你有没有使用SupportMapFragment,而不是考虑:

<fragment 
    class="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

SupportMapFragment f = new SupportMapFragment(); 
getSupportFragmentManager().beingTransaction() 
    .add(android.R.id.content, f) 
    .commit(); 

参见文档:https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/SupportMapFragment

+0

我正在使用v2,但我需要能够在不同的片段之间切换。 – user1513687