您好,我正在尝试将我的 Android Studio 项目从 NavHost
迁移到 AnimatedNavHost
,所以我做了以下更改:
- 将 rememberNavController() 替换为 rememberAnimatedNavController()
- 将 NavHost 替换为 AnimatedNavHost 在此博客上找到:https://medium.com/androiddevelopers/animations-in-navigation-compose-36d48870776b
我没有添加任何动画,但是当我尝试运行我的应用程序时,编译器告诉我这个错误:
java.lang.NoSuchMethodError: No static method rememberNavController(Landroidx/compose/runtime/Composer;I)Landroidx/navigation/NavHostController; in class Landroidx/navigation/compose/NavHostControllerKt; or its super classes (declaration of 'androidx.navigation.compose.NavHostControllerKt' appears in /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()
}
}
}
主要 Activity :
@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)
}
}
}
}
当我在没有 Animated
的情况下运行应用程序时,一切都很好,但是当我将 AnimatedNavController()
更改为 rememberAnimatedNavController()
时 MainActivity
和 NavHost
到 AnimatedNavHost
应用程序崩溃并说出我写的错误。
最佳答案
将版本更改为 0.21.1-beta 对我有用。
实现“com.google.accompanist:accompanist-navigation-animation:0.21.1-beta”
关于android - 从 NavHost 迁移到 AnimatedNavHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71694143/