我正在用Compose重写一个Android应用程序,一切都很顺利。但是在我的应用程序中,我有一个Debug屏幕,它链接到一些Fragments进行调试。遗憾的是,要使用Compose Navigation,你的所有组件都必须是可合成的......我现在不能在Compose中重写这些Fragments,所以我使用如下的 Package 器屏幕:
@Composable
fun DeviceInfoScreen(navController : NavController, fragmentManager: FragmentManager) {
Scaffold(
topBar = {
TopAppBar(
title = {
Text(text = LocalContext.current.getString(R.string.debug_title))
},
navigationIcon = {
IconButton(onClick = {navController.navigateUp()}) {
Icon(Icons.Filled.ArrowBack, "backIcon")
}
},
backgroundColor = colorResource(id = R.color.primary),
contentColor = Color.White,
elevation = 77.dp)
},
content = {
Surface(color = colorResource(id = R.color.background), modifier = Modifier.padding(it)) {
AndroidViewBinding(FragmentDeviceInfoContainerBinding::inflate) {
val myFragment = fragmentDeviceInfoWrapper.getFragment<MyDeviceInfoFragment>()
}
}
})
}
我的布局是这样的:
<androidx.fragment.app.FragmentContainerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentDeviceInfoWrapper"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:name="com.mypackage.MyDeviceInfoFragment">
</androidx.fragment.app.FragmentContainerView>
我的Fragment被正确加载了,但是这个Fragment不能导航到多个其他Fragment,而其他Fragment也可以在...有没有合适的方法来给予NavController,或者在Compose之外提供一个新的Activity,这样这些Fragment就可以链接在一起并且是独立的?或者任何允许在Fragment之间导航的东西,同时仍然来自一个可组合对象。
我尝试过编辑片段中的代码,并使用如下事务:
childFragmentManager.beginTransaction().replace(R.id.fragmentDeviceInfoWrapper, SecondFragment()).addToBackStack(null).commit()
但我遇到了车祸:第一个月
我现在没有主意了,我想我在其他地方也没有找到类似的东西,所以我希望你能帮助我!谢谢
1条答案
按热度按时间gv8xihay1#
尝试使用简单的
<fragment>
标记,而不是<androidx.fragment.app.FragmentContainerView>