我正在使用内部使用 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 的支持)吗?