android 在Jetpack Compose项目中添加Google Maps(MapFragment)Fragment

3lxsmp7m  于 2023-05-27  发布在  Android
关注(0)|答案(1)|浏览(151)

我想将GoogleMap添加到我的Jetpack ComposeMap中,但当前的Jetpack Compose GoogleMap尚未针对我的用例完成。因此,我想在我的Jetpack Compose项目中嵌入现有的具有更多功能的Fragments。
这是我的Composable fun,我得到一个NPE,我不知道如何继续。我没有任何.xml文件,我更喜欢没有它们的工作:

@Composable
fun GoogleMapsWrapper() {
    val myFragment = remember {
        MapFragment()
    }

    AndroidView(factory = { _ ->
        myFragment.view!! // This gives the NPE
    })
}
0yg35tkg

0yg35tkg1#

我找不到任何方法在没有任何xml文件的组合中使用片段,你必须创建一个包含FragmentcontainerView的xml文件。

<androidx.fragment.app.FragmentContainerView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="com.example.compose.snippets.interop.MyFragment" />

使用AndroidViewBinding组合件在Compose中添加Fragment。AndroidViewBinding具有特定于片段的处理,例如当可组合对象离开组合时删除片段。

@Composable
fun FragmentInComposeExample() {
    AndroidViewBinding(MyFragmentLayoutBinding::inflate) {
        val myFragment = fragmentContainerView.getFragment<MyFragment>()
        
    }
}

相关问题