当前位置: 首页 > 知识库问答 >
问题:

有没有办法使用Jetpack Compose在处理程序中进行导航?

江丰羽
2023-03-14

我试图用Jetpack Compose创建一个闪屏。我创建了我的导航,我有我所有的id去不同的屏幕,但我不能让一个屏幕导航到另一个Hadler内部。你们是怎么做到的?

    @Composable
fun GoToMainScreen(navController: NavHostController){
    Handler(Looper.getMainLooper()).postDelayed(object : Thread() {
        override fun run() {
            navController.navigate("main_screen")
            Log.i("LOOPER", "It got here!")
        }
    }, 4000L)
}

共有1个答案

巫马泰
2023-03-14

我已经试过了,在我的情况下,它可以很好地与您的可组合组件导航:

val navController = rememberNavController()
NavHost(navController = navController, startDestination = "profile") {
    composable("profile") {
        GoToMainScreen(navController)
    }
    composable("main_screen") { Text("main_screen") }
}

不确定您的情况有什么不同,但是在compose中我们通常不需要< code>Handler

首先,您需要包装处理程序< code>LaunchedEffect的创建,否则在屏幕重组的情况下,您的处理程序可能会被多次创建。

LaunchEffect中,我们可以使用协程,因此代码看起来要少得多:

@Composable
fun GoToMainScreen(navController: NavHostController) {
    LaunchedEffect(Unit) {
        delay(2000L)
        navController.navigate("main_screen")
    }
}

如果这仍然无助于确保提供一个最小可重现的示例,就像我的第一个代码块一样。

 类似资料:
  • 我有一些用MATLAB进行图像处理的代码。为了运行matlab代码,我们需要购买matlab许可证。但根据我的项目的要求,我必须使用任何开源软件。所以我想我可以把整个代码转换成Java。 用根啤酒是个好主意吗???

  • 问题内容: 有没有办法用TypeScript语言进行方法重载? 我想实现以下目标: 这是我不想做的一个例子(我真的很讨厌JS中重载hack的那一部分): 问题答案: 根据规范,TypeScript确实支持方法重载,但是它很笨拙,并且包含许多手动检查参数类型的工作。我认为这主要是因为在纯JavaScript中最接近方法重载的地方还包括检查,并且TypeScript尝试不修改实际的方法主体,以避免任何

  • 问题内容: 我想在Python中使用PhantomJS。我用谷歌搜索了这个问题,但是找不到合适的解决方案。 我发现 可能是一个不错的选择。但是我无法通过一些争论。 使用可能是目前合适的解决方案。我想知道是否有更好的解决方案。 有没有办法在Python中使用PhantomJS? 问题答案: 在python中使用PhantomJS的最简单方法是通过Selenium。最简单的安装方法是 安装NodeJS

  • 我想在Python中使用PhantomJS。我谷歌了这个问题,但找不到合适的解决方案。 我发现可能是一个不错的选择。但我无法向它传递一些论据。 使用目前可能是一个合适的解决方案。我想知道是否有更好的解决办法。 有没有办法在Python中使用PhantomJS?

  • 我有一个使用SpringCloud配置的SpringBoot应用程序,但我想在SpringBootApps引导程序中加密SpringCloud配置密码。yml文件。有办法做到这一点吗?下面是一个例子。 Spring Boot应用程序bootstrap.yml

  • 问题内容: 我正在使用Python中的subprocess.Popen启动许多子流程。我想检查一个这样的过程是否已经完成。我发现了两种检查子流程状态的方法,但似乎都可以迫使流程完成。一种是使用process.communicate()并打印返回代码,如解释在这里。另一种方法是简单地调用process.wait()并检查它是否返回0。 有没有一种方法可以检查进程是否仍在运行,而无需等待进程完成? 问