嗨,我正在尝试将我的Android Studio项目从NavHost
迁移到AnimatedNavHost
,因此我进行了更改:
我没有添加任何动画,但当我试图运行我的应用程序时,编译器告诉我这个错误:
java.lang.NoSuchMethodError:没有静态方法记忆NavController(Landroidx/compose/runtime/Composer; I)Landroidx/导航/NavHostController;在类Landroidx/导航/compose/NavHostControlllerKt;或其超类('androidx.navigation.compose.NavHostControllerKt'的声明出现在 /data/app/~~3ss2A6J7mK0SYONGyPJOUw==/com.example.soschool-o-E9YEHWVSYOUf5K7L3c5Q==/base.apk!classes11.dex)
现在,我将附加两个感兴趣的类:
导航图:
@ExperimentalAnimationApi
@ExperimentalPagerApi
@Composable
fun SetupNavGraph(
navController: NavHostController,
startDestination: String
) {
AnimatedNavHost(
navController = navController,
startDestination = startDestination
) {
composable(route = Screen.Welcome.route) {
WelcomeScreen(navController = navController)
}
composable(route = Screen.Home.route) {
HomeScreen()
}
composable(route = Screen.Login.route){
LoginScreen()
}
}
}
主要活动:
@ExperimentalAnimationApi
@ExperimentalPagerApi
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
@Inject
lateinit var splashViewModel: SplashViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen().setKeepOnScreenCondition {
!splashViewModel.isLoading.value
}
setContent {
SOSchoolTheme {
val screen by splashViewModel.startDestination
val navController = rememberAnimatedNavController()
SetupNavGraph(navController = navController, startDestination = screen)
}
}
}
}
当我在没有动画
内容的情况下运行应用程序时,一切都很好,但是当我更改动画导航控制器()
以记住MainActive
上的动画导航控制器()
和NavHost
到动画NavHost时,
应用程序崩溃并说出我写的错误。
将版本更改为0.21.1测试版对我很有效。
实现“com.google .伴奏者:伴奏者-导航-动画:0.21.1-beta”
替换从<code>导入androidx.navigation.compose的导入。可组合到导入com.google.compost.navigation.animation.composable
。这是伴奏github上列出的问题之一。
将compileSdkVersion
设置为33或最新版本(以较高者为准),并进行所有必要的更改,如正确导入,您正在阅读应用程序中的集成动画。