堆栈跟踪
java.lang.NoSuchMethodError: No virtual method setScreen()Lkotlin/jvm/functions/Function3;
in class Lcom/example/app/presentation/navigation/Screen$ExampleScreen;
or its super classes (declaration of 'com.example.app.presentation.navigation.Screen$ExampleScreen'
appears in /data/data/com.example.app.dev/code_cache/.overlay/base.apk/classes2.dex)
at com.example.app.presentation.navigation.NavigationManagerKt$NavigationManager$1.invoke(NavigationManager.kt:242)
at com.example.app.presentation.navigation.NavigationManagerKt$NavigationManager$1.invoke(NavigationManager.kt:34)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:382)
...
发生
在 Jetpack compose 的导航主机中设置屏幕时
Screen.ExampleScreenObject.let { screen ->
composable(
route = screen.getFullRoute(),
arguments = screen.getArgs(),
content = screen.screen
)
}
其中 screen.screen 的类型为
@Composable (NavBackStackEntry) -> Unit
否则,如果我直接调用屏幕可组合,则不会发生
Screen.ExampleScreenObject.let { screen ->
composable(
route = screen.getFullRoute(),
arguments = screen.getArgs(),
content = {
ExampleScreen()
}
)
}
版本
撰写:1.5.2
导航撰写:2.7.3
kotlin 撰写:1.8.22
(如果有需要我会补充)
编辑
我在 NavController 中也遇到了类似的问题
java.lang.NoSuchMethodError: No virtual method getBackQueue()Lkotlin/collections/ArrayDeque;
in class Landroidx/navigation/NavHostController;
or its super classes (declaration of 'androidx.navigation.NavHostController' a
ppears in /data/app/~~HJSBJgaTbw4Lze-D4uCIwQ==/com.example.app.dev-i2HpxAmhqkk6Wwv7O0dNxg==/base.apk!classes32.dex)
at com.example.app.presentation.navigation.NavigatorImpl.logBackStack(NavigatorImpl.kt:21)
at com.example.app.presentation.navigation.NavigatorImpl.access$logBackStack(NavigatorImpl.kt:8)
at com.example.app.presentation.navigation.NavigatorImpl$1.onDestinationChanged(NavigatorImpl.kt:14)
at androidx.navigation.NavController.dispatchOnDestinationChanged(NavController.kt:1002)
at androidx.navigation.NavController.navigate(NavController.kt:1859)
at androidx.navigation.NavController.onGraphCreated(NavController.kt:1283)
at androidx.navigation.NavController.setGraph(NavController.kt:1195)
at androidx.navigation.NavController.setGraph(NavController.kt:100)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:225)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:83)
...
罪魁祸首是这两个依赖项
implementation ("androidx.navigation:navigation-fragment-ktx:2.5.3")
implementation ("androidx.navigation:navigation-ui-ktx:2.5.3")
具体版本
升级它们以匹配导航-撰写版本 2.7.3