首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一段时间后从后台恢复时应用程序重新启动。

一段时间后从后台恢复时应用程序重新启动。
EN

Stack Overflow用户
提问于 2022-10-06 06:34:57
回答 1查看 61关注 0票数 0

场景是当应用程序位于片段A上,然后将应用程序在后台保存一段时间。在从后台恢复后,应用程序的初始状态是片段A,但是突然从导航组件中的startDestination重新启动,导致下面的崩溃。

代码语言:javascript
复制
 Fatal Exception: java.lang.IllegalArgumentException: Navigation action/destination com.app.gulfcraftv2:id/action_splashFragment_to_nav_home cannot be found from the current destination Destination(com.app.gulfcraftv2:id/companyFragment) class=com.precise.gulfcraft.ui.companydetail.CompanyDetailFragment
   at androidx.navigation.NavController.navigate(NavController.kt:1540)
   at androidx.navigation.NavController.navigate(NavController.kt:1472)
   at androidx.navigation.NavController.navigate(NavController.kt:1930)
   at com.precise.gulfcraft.ui.splash.SplashFragment.onCreate$lambda-6(SplashFragment.kt:75)
   at com.precise.gulfcraft.ui.splash.SplashFragment.lambda$Aso8YI02DbFhfWptH-qrBUU0ulU()
   at com.precise.gulfcraft.ui.splash.-$$Lambda$SplashFragment$Aso8YI02DbFhfWptH-qrBUU0ulU.run(:2)
   at android.os.Handler.handleCallback(Handler.java:883)
   at android.os.Handler.dispatchMessage(Handler.java:100)
   at android.os.Looper.loop(Looper.java:224)
   at android.app.ActivityThread.main(ActivityThread.java:7562)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

注意-使用的启动模式是singleTop

坠机发生在下面的部分。

代码语言:javascript
复制
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    try {
        Handler(Looper.getMainLooper()).postDelayed({
            findNavController().navigate(SplashFragmentDirections.actionSplashFragmentToNavHome())
        }, 3000)
    } catch (e: Exception) {
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-06 08:06:52

首先检查这是否是您的当前目的地,并具有以下功能

代码语言:javascript
复制
fun navigate(destination: NavDirections) = with(findNavController()) {
    currentDestination?.getAction(destination.actionId)
        ?.let { navigate(destination) }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73969499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档