【发布时间】:2022-01-07 02:39:15
【问题描述】:
当我在NavGraph 中调用我的可组合时遇到问题,它重复了 3 次或有时更多次。我查看了我拨打电话的位置,但没有看到任何循环或其他东西。
NavGraph
fun NavGraphBuilder.addScheduleDetails(
navController: NavHostController,
userDataViewModel: UserDataViewModel,
titulos: MutableState<String>,
datosViewModel: DatosViewModel,
){
val animationState = mutableStateOf(true)
composable(route = MainDestinations.SCHEDULE_DETAILS_ROUTE+"/{${NavArguments.NOMBRE_HORARIO}}")
{backStackEntry ->
Log.w("Call", "ScheduleDetails")
titulos.value = backStackEntry.arguments?.getString(NavArguments.NOMBRE_HORARIO)!!+" "
val actions = MainActions(navController = navController)
DetallesHorarioScreen(
nombreHorario = backStackEntry.arguments?.getString(NavArguments.NOMBRE_HORARIO),
userDataViewModel = userDataViewModel,
onNavToAddSubject = actions.navigateToAgregarMateria,
datosViewModel = datosViewModel,
animationState = animationState
)
}
}
从LOG打印
2022-01-06 19:57:01.548 30533-30533/horarios W/Call: ScheduleDetails
2022-01-06 19:57:01.613 30533-30533/horarios W/Call: ScheduleDetails
2022-01-06 19:57:01.987 30533-30533/horarios W/Call: ScheduleDetails
致电composable(route = MainDestinations.SCHEDULE_DETAILS_ROUTE ...)
Card(
modifier = Modifier
.fillMaxWidth()
.height(80.dp)
.padding(10.dp)
.clickable { onNavToHorario(nombre) }, //Call to navigator
border = BorderStroke(width = 1.dp, color = primaryColorCustom),
shape = RoundedCornerShape(10),
backgroundColor = Color.White,
elevation = 4.dp
) {...}
onNavToHorario()
val actions = MainActions(navController = navController)
(...)
onNavToHorario = actions.navigateToHorario
MainActions()
class MainActions(navController: NavHostController){
val navigateToHorario:(String) -> Unit = {nomHorario: String ->
navController.navigate(route = MainDestinations.SCHEDULE_DETAILS_ROUTE+"/${nomHorario}")
}
}
在其他情况下,我遇到了类似的问题,并且出现了动画,但我已经删除了 NavGraph 中的所有动画,但问题仍然存在
【问题讨论】:
标签: android kotlin navigation android-jetpack-compose