gpt4 book ai didi

没有xml的Android jetpack撰写 fragment

转载 作者:行者123 更新时间:2023-12-04 23:49:55 26 4
gpt4 key购买 nike

晚安!我正在使用drawerContent和navigationIcon来创建菜单,但是我可以创建一个没有xml的Fragment()吗?在组成喷气背包。如果有人有任何引用,我将不胜感激......

最佳答案

使用 Compose,您可以尝试不同的东西。
您可以使用 Navigation component 在可组合项之间导航(目前在 1.0.0-alpha10 中)
创建 NavController和:

val navController = rememberNavController()
并定义一个 NavHost与目的地:
NavHost(
navController,
startDestination = "entry1"
) {
composable("entry1") { Entry1(..) }
composable("entry2") { Entry2(..) }
composable("entry3") { Entry3(..) }
}
为了简化导航,只需创建一个密封类(这不是强制性的)。
sealed class Screen(val route: String, @StringRes val resourceId: Int) {
object Entry1 : Screen("entry1", R.string.entry1)
object Entry2 : Screen("entry2", R.string.entry2)
object Entry3 : Screen("entry3", R.string.entry3)
}
并更改 NavHost至:
NavHost(
navController,
startDestination = Screen.Entry1.route
) {
composable(Screen.Entry1.route) { Entry1(/*..*/) }
composable(Screen.Entry2.route) { Entry2(/*..*/) }
composable(Screen.Entry3.route) { Entry3(/*..*/) }
}
现在只需使用 Scaffold 创建一个drawerContent和navigationIcon来打开菜单并导航到目的地:
val navController = rememberNavController()
val current by navController.currentBackStackEntryAsState()
val scaffoldState = rememberScaffoldState()
val scope = rememberCoroutineScope()

val items = listOf(
Screen.Entry1,
Screen.Entry2,
Screen.Entry3
)

Scaffold(
scaffoldState = scaffoldState,
drawerContent = {
//val currentRoute = current?.arguments?.getString(KEY_ROUTE)
val currentRoute = current?.destination?.route

items.forEach { screen ->
val selected = currentRoute == screen.route
val selectedColor = if (selected) Color.Yellow else Color.Transparent
Row(modifier = Modifier
.fillMaxWidth()
.height(32.dp)
.background(selectedColor)
.clickable {
scope.launch { scaffoldState.drawerState.close()}
navController.navigate(screen.route) {
popUpTo = navController.graph.startDestination
launchSingleTop = true
}
}) {
Text(stringResource(screen.resourceId))
}
}
},
topBar = {
TopAppBar(){
IconButton(
onClick = {
scope.launch { scaffoldState.drawerState.open() }
}
) {
Icon(Icons.Filled.Menu,"")
}
}
},
content = {
NavHost(
navController,
startDestination = Screen.Entry1.route
) {
composable(Screen.Entry1.route) { Entry1(/*..*/) }
composable(Screen.Entry2.route) { Entry2(/*..*/) }
composable(Screen.Entry3.route) { Entry3(/*..*/) }
}
}
)
在哪里:
@Composable
fun Entry1(navigateTo: () -> Unit) {

Column(){
/*.....*/
}
}
enter image description here

关于没有xml的Android jetpack撰写 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67133781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com