1

我正在使用内部使用 android.support.v4.app.Fragment的库WizardDroid 。

在我的应用程序中,我使用普通的片段(android.app.Fragment)。

我还使用 Google Maps v2,我在一个从 wizardroid 类(它本身继承自 android.support.v4.app.Fragment)继承的片段中检索它。

public class CreateEventStepMap extends WizardStep

{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.create_event_map, container, false);

    final Event event = ((EventInfo)getActivity()).getEvent();

    final GoogleMap googleMap = ((com.google.android.gms.maps.SupportMapFragment)getActivity().getFragmentManager().findFragmentById(R.id.map)).getMap();


    return v;
}

}

如您所见,我转换为 com.google.android.gms.maps.SupportMapFragment() 因为 findFragmentById(R.id.map) 返回一个支持地图片段。我不能这样做,因为我会得到一个编译错误。

这是地图片段所在的 XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

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

在我的应用程序的其他任何地方,我都使用普通片段!

当我运行应用程序时,我得到这个异常: 11-08 20:47:19.178: E/AndroidRuntime(10347): android.view.InflateException: Binary XML file line #8: Error inflating class fragment

这是因为我在同一个应用程序中混合了片段和支持地图片段,还是我在做其他愚蠢的事情?

如果答案是第一个,解决方案是更改 Wizardroid 库的代码(我不需要对版本 < 4 的支持)吗?

4

0 回答 0