碎片错误中的MapView

时间:2013-07-08 22:23:45

标签: android google-maps-android-api-2

当膨胀这个.xml:

时,我得到一个android.inflate.Exception
    <?xml version="1.0" encoding="utf-8"?>
    <com.google.android.maps.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:apiKey="***"
    />

这个类会膨胀.xml(fragment_b.xml)

public class BFragment extends Fragment {

private MapView mMapView;
private GoogleMap googleMap;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
    // inflat and return the layout
    View v = inflater.inflate(R.layout.fragment_b, container, false);
    mMapView = (MapView) v.findViewById(R.id.map);
    mMapView.onCreate(savedInstanceState);
    mMapView.onResume();//needed to get the map to display immediately

    try {
        MapsInitializer.initialize(this.getActivity());
    } catch (GooglePlayServicesNotAvailableException e) {
        e.printStackTrace();
    }

    googleMap = mMapView.getMap();

    return v;
}

}

我已经尝试了很多没有结果的.xml。

1 个答案:

答案 0 :(得分:0)

您是不是在混合map api V1map api V2实施?

这是地图v1:

<com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="***"
/>

这就是map api V2的样子:

<com.google.android.gms.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

由于您在XML中创建了map_v1的实例,因此不允许您调用onCreate()onResume() - 您必须为map_v2执行此操作。

另外您应该记住,在map_v2中,当您的活动/片段生命周期中发生适当的事件时,您必须致电onCreate()onResume() ...所以您必须仅从您的活动/片段onCreateonResume

中拨打这些电话