簡體   English   中英

嘗試使用 Jetpack Compose 在屏幕之間導航

[英]Trying to navigate between screens with jetpack compose

我對 Jetpack 和 Android 開發還很陌生,我正在嘗試在視圖之間導航。 來自 Swift,我認為我可以通過NavController來更新視圖。

我的RootScreen看起來像這樣

@Composable
fun RootScreen() {
    val navigationController = rememberNavController()
    Scaffold(
        bottomBar = {
            BottomBar(navigationController)
        }
    ) {
        NavHost(
            navController = navigationController,
            startDestination = NavigationItem.Home.route
        ) {
            composable(NavigationItem.Home.route) {
                HomeScreen(navController = navigationController)
            }
            composable(NavigationItem.Routes.route) {
                RouteList()
            }
            composable(NavigationItem.Settings.route) {
                Text("Settings")
            }
        }
    }
}

在我的HomeScreen上,我正在點擊一個具有 navigationAction 的視圖,我正在其中更新路線,但該視圖不會更新。

@Composable
fun HomeScreen(navController: NavController) {
    ...
    HomeCard(title = homeScreen[0].title,
        image = painterResource(id = homeScreen[0].image),
        frameHeight = 250,
        frameWidth = 175,
        navigationAction = {
            navController.navigate(NavigationItem.Routes.route)
            }
    )
}

這是我點擊操作的地方

@Composable
fun HomeCard(
    title: String,
    image: Painter,
    frameHeight: Int,
    frameWidth: Int,
    navigationAction: () -> Unit
) {
    Card(
        elevation = 13.dp,
        modifier = Modifier
            .padding(top = 8.dp)
            .clip(RoundedCornerShape(13.dp))
            .height(frameHeight.dp)
            .width(frameWidth.dp)
            .clickable { navigationAction }
    ) {
      ....
    }

您的屏幕未被導航,因為從未調用過navigationAction

@Composable
fun HomeCard(
    navigationAction: () -> Unit
) {
    Card(
        modifier = Modifier
            .clickable { navigationAction.invoke() }
    ) {
      ....
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM