致命异常:java.lang.IllegalStateException 从 INITIALIZED 开始没有事件发生

问题描述 投票:0回答:7

不确定我在应用程序中更改了什么,但在发布后我突然得到了这个无法追踪的堆栈跟踪(我更新了一些依赖项,但不确定是什么原因导致我无法复制。

atal Exception: java.lang.IllegalStateException: no event down from INITIALIZED
   at androidx.lifecycle.LifecycleRegistry.backwardPass(LifecycleRegistry.java:281)
   at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:302)
   at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:148)
   at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
   at androidx.fragment.app.FragmentViewLifecycleOwner.handleLifecycleEvent(FragmentViewLifecycleOwner.java:62)
   at androidx.fragment.app.Fragment.performDestroyView(Fragment.java:3130)
   at androidx.fragment.app.FragmentStateManager.destroyFragmentView(FragmentStateManager.java:706)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1407)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1477)
   at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1555)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1608)
   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3046)
   at androidx.fragment.app.FragmentManager.dispatchDestroyView(FragmentManager.java:3018)
   at androidx.fragment.app.Fragment.performDestroyView(Fragment.java:3128)
   at androidx.fragment.app.FragmentStateManager.destroyFragmentView(FragmentStateManager.java:706)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1407)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1477)
   at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1555)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1617)
   at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2150)
   at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2061)
   at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1957)
   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3056)
   at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:2983)
   at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2923)
   at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:562)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1324)
   at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2392)
   at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2137)
   at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2061)
   at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1957)
   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3056)
   at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2990)
   at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251)
   at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:458)
   at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210)
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1392)
   at android.app.Activity.performStart(Activity.java:7338)
   at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3172)
   at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:186)
   at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:171)
   at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:148)
   at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:76)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1988)
   at android.os.Handler.dispatchMessage(Handler.java:106)
   at android.os.Looper.loop(Looper.java:232)
   at android.app.ActivityThread.main(ActivityThread.java:7240)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:883)
android android-activity
7个回答
27
投票

问题的修复现已稳定在

androidx.fragment:fragment-ktx:1.3.0


6
投票

问题已修复,现在稳定

用途:

androidx.fragment:fragment-ktx:1.3.0


3
投票

navController.navigate
onCreate
内时出现此错误,因此我将检查意图的代码移至
onResume
- 问题解决了


2
投票

发生此崩溃是因为导航和起始目的地之间的 id 相同。您的导航和目的地应该有唯一的 ID。

例如:

这是崩溃:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main"
    app:startDestination="@id/main">

这是正确的:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/main"
        app:startDestination="@id/main_fragment">

2
投票

如果在组合测试中发生这种情况,您需要致电

navHostController.navigate(...)
从可组合项内部,即内部

composeRule.setContent { 
     navHostController.navigate(...) 
}

0
投票

我在编写涉及导航组合的测试时遇到了这个问题。确保您在主线程上调用

navigate
,例如使用
ComposeTestRule#runOnUiThread

@Test
fun testNavControllerNavigates() {
    lateinit var navController: NavController

    rule.setContent {
        navController = rememberNavController()
        NavHost(navController, ...) { ... }
    }

    rule.runOnUiThread { navController.navigate(...) }
    // runOnIdle works too :)
}

或者,您可以从可组合项中定义的效果中调用它。

@Test
fun testNavControllerNavigates() {
    var destination by mutableStateOf("A")
    lateinit var navController: NavController

    rule.setContent {
        LaunchedEffect(destination) {
            navController.navigate(destination)
        }
        navController = rememberNavController()
        NavHost(navController, ...) { ... }
    }

    destination = "B"
}

0
投票

对于我来说,更新以下版本的片段依赖项后。它工作了

androidx.fragment:fragment-ktx:1.5.7
© www.soinside.com 2019 - 2024. All rights reserved.