Android 带有映射片段崩溃的活动

Android 带有映射片段崩溃的活动,android,android-layout,android-fragments,android-activity,android-fragmentactivity,Android,Android Layout,Android Fragments,Android Activity,Android Fragmentactivity,我有一个活动布局,其中包含一个片段: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > ... &l

我有一个活动布局,其中包含一个片段:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    ...

    <fragment
        android:id="@+id/HomeActivity_container_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/HomeActivity_navigation_LinearLayout" />

</RelativeLayout>
下面是
changeFragment
函数:

protected void changeFragment(int fragmentContainer, Fragment newFragment)
{
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(fragmentContainer, newFragment);
    transaction.addToBackStack(null);

    transaction.commit();
}
这是地图片段的布局:

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

    <fragment
        android:id="@+id/MapFragment_map_Fragment"
        class="com.google.android.gms.maps.MapFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

</RelativeLayout>
Nore:谷歌地图验证没有问题,因为如果我将地图放入活动片段容器中,它就会工作

以下是我从logcat得到的一个例外:

02-10 20:23:33.591: E/AndroidRuntime(2009): FATAL EXCEPTION: main
02-10 20:23:33.591: E/AndroidRuntime(2009): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.evapp.activities/com.evapp.activities.HomeActivity}: android.view.InflateException: Binary XML file line #50: Error inflating class fragment
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.os.Looper.loop(Looper.java:137)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.main(ActivityThread.java:4745)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.reflect.Method.invokeNative(Native Method)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.reflect.Method.invoke(Method.java:511)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at dalvik.system.NativeStart.main(Native Method)
02-10 20:23:33.591: E/AndroidRuntime(2009): Caused by: android.view.InflateException: Binary XML file line #50: Error inflating class fragment
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.Activity.setContentView(Activity.java:1867)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at com.evapp.activities.HomeActivity.onCreate(HomeActivity.java:21)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.Activity.performCreate(Activity.java:5008)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
02-10 20:23:33.591: E/AndroidRuntime(2009):     ... 11 more
02-10 20:23:33.591: E/AndroidRuntime(2009): Caused by: java.lang.NullPointerException: name == null
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.VMClassLoader.findLoadedClass(Native Method)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:354)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.ClassLoader.loadClass(ClassLoader.java:491)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.support.v4.app.Fragment.isSupportFragmentClass(Fragment.java:436)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:255)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
02-10 20:23:33.591: E/AndroidRuntime(2009):     ... 21 more

可能是您想使用
FrameLayout
(我认为您错误地使用了
fragment

试试这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    ...

    <FrameLayout <!-- here use FrameLayout, not fragment -->
        android:id="@+id/HomeActivity_container_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/HomeActivity_navigation_LinearLayout" />

</RelativeLayout>

...
android:id=“@+id/HomeActivity\u容器\u片段”
android:layout\u width=“匹配父项”
android:layout\u height=“match\u parent”
android:layout\u alignParentBottom=“true”
android:layout\u alignParentLeft=“true”
android:layout\u alignParentRight=“true”
android:layout_below=“@+id/HomeActivity_navigation_LinearLayout”/
02-10 20:23:33.591: E/AndroidRuntime(2009): FATAL EXCEPTION: main
02-10 20:23:33.591: E/AndroidRuntime(2009): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.evapp.activities/com.evapp.activities.HomeActivity}: android.view.InflateException: Binary XML file line #50: Error inflating class fragment
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.os.Looper.loop(Looper.java:137)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.main(ActivityThread.java:4745)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.reflect.Method.invokeNative(Native Method)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.reflect.Method.invoke(Method.java:511)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at dalvik.system.NativeStart.main(Native Method)
02-10 20:23:33.591: E/AndroidRuntime(2009): Caused by: android.view.InflateException: Binary XML file line #50: Error inflating class fragment
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.Activity.setContentView(Activity.java:1867)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at com.evapp.activities.HomeActivity.onCreate(HomeActivity.java:21)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.Activity.performCreate(Activity.java:5008)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
02-10 20:23:33.591: E/AndroidRuntime(2009):     ... 11 more
02-10 20:23:33.591: E/AndroidRuntime(2009): Caused by: java.lang.NullPointerException: name == null
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.VMClassLoader.findLoadedClass(Native Method)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:354)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.ClassLoader.loadClass(ClassLoader.java:491)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.support.v4.app.Fragment.isSupportFragmentClass(Fragment.java:436)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:255)
02-10 20:23:33.591: E/AndroidRuntime(2009):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
02-10 20:23:33.591: E/AndroidRuntime(2009):     ... 21 more
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    ...

    <FrameLayout <!-- here use FrameLayout, not fragment -->
        android:id="@+id/HomeActivity_container_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/HomeActivity_navigation_LinearLayout" />

</RelativeLayout>