0

在我的应用程序中,我使用 aFragmentContainerView来保留一个从SupportMapFragment.
像这样:

<androidx.fragment.app.FragmentContainerView
    android:name="com.package.name.fragments.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

阅读有关 SupportMapFragment 的文档后,我发现可以使用 xml 属性设置其初始状态(如这里,或者更重要的是,如这里)。但是,添加这些属性FragmentContainerView不会影响地图。
因此,以下代码无法按预期工作:

<androidx.fragment.app.FragmentContainerView
    android:name="com.package.name.fragments.MapFragment"
    android:id="@+id/map"
    map:cameraTargetLat="11"
    map:cameraTargetLng="10"
    map:cameraZoom="10.0"
    map:mapType="normal"
    map:mapId="@string/google_maps_style"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

样式未设置,纬度、经度或缩放也未设置。我发现的唯一解决方法是:

<fragment
    class="com.package.name.fragments.MapFragment"
    android:id="@+id/map"
    map:cameraTargetLat="11"
    map:cameraTargetLng="10"
    map:cameraZoom="10.0"
    map:mapType="normal"
    map:mapId="@string/google_maps_style"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

这个按预期工作,但据我所知FragmentContainerView是为了替换fragment标签。所以问题是,是否可以将 XML 属性传递给包含在 中的片段FragmentContainerView

编辑:感谢@ianhanniballake,我发现在这两种情况下,属性都onInflate()正确地传递给了片段的方法。但这并没有解决主要问题,为什么如果片段是在标签中定义的,则最终设置这些属性指定的参数(例如相机纬度,经度或缩放)fragment而不是 - 如果在FragmentContainerView标签中?
长话短说,为什么没有FragmentContainerView正确使用 XML 属性初始化映射?

4

0 回答 0