使用GoogleMaps布局的运行时错误'碎片第二次

时间:2015-03-30 05:09:47

标签: android google-maps android-fragments fragment

我的布局如下。 当我第一次运行它时一切正常,我看到了地图:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent"
          android:layout_height="match_parent"
          android:background="@color/backNormal"
          android:orientation="vertical"
    >
   <Button
            android:id="@+id/buttonDriverAgreeYes"
            android:gravity="center"
            android:text='Agree'
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
<fragment
        android:id="@+id/map1"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

    setContentView(R.layout.my_page1)
    map1 = ((MapFragment) getFragmentManager().findFragmentById(R.id.map1))
                    .getMap();

但是当我第二次尝试显示此布局时,我收到运行时错误, 或者甚至当我试图展示另一个类似的布局时 地图名为map2:

        setContentView(R.layout.my_page2)
    map2 = ((MapFragment) getFragmentManager().findFragmentById(R.id.map2))
                    .getMap();

标记上的错误消息点&#34;片段&#34;:

android.view.InflateException: Binary XML file line #60: Error inflating class fragment
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
            at android.app.Activity.setContentView(Activity.java:2144)

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

嘿因为你的map1 Fragment已经是View了。 并在视图上添加另一个map2片段视图。 所以它会生成一个错误

为此您只需在替换片段

之前放置此代码
 Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));  
    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    ft.remove(fragment);
    ft.commit();