在我的应用程序中,我使用 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 属性初始化映射?