Jetpack Compose 导航中出现 NoSuchMethodError

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

堆栈跟踪


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)
...
android android-jetpack-compose build.gradle android-jetpack jetpack-compose-navigation
1个回答
0
投票

罪魁祸首是这两个依赖项

implementation ("androidx.navigation:navigation-fragment-ktx:2.5.3")
implementation ("androidx.navigation:navigation-ui-ktx:2.5.3")

具体版本

升级它们以匹配导航-撰写版本 2.7.3

© www.soinside.com 2019 - 2024. All rights reserved.