0

膨胀这个 .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 尝试了很多东西,但没有结果。

4

1 回答 1

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

于 2013-07-08T22:53:33.107 回答