android - 从 NavHost 迁移到 AnimatedNavHost

标签 android android-studio kotlin uinavigationcontroller android-jetpack-compose

您好,我正在尝试将我的 Android Studio 项目从 NavHost 迁移到 AnimatedNavHost,所以我做了以下更改:

我没有添加任何动画,但是当我尝试运行我的应用程序时,编译器告诉我这个错误:

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()MainActivityNavHostAnimatedNavHost 应用程序崩溃并说出我写的错误。

最佳答案

将版本更改为 0.21.1-beta 对我有用。

实现“com.google.accompanist:accompanist-navigation-animation:0.21.1-beta”

关于android - 从 NavHost 迁移到 AnimatedNavHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71694143/

相关文章:

android - 使用Transition引起的问题

android - 初始化谷歌地图时 mapFragment.getMapAsync(this) 出现空指针异常

javascript - 在android Webview中注入(inject)Javascript

android - Asynctask 无法显示服务器响应

java - 无法解决 android studio 中的符号 'java.time.LocalDate' 错误

recursion - 如何在 Kotlin 中使用 FoldRight 递归实现 dropWhile

android - 在 Kotlin 中从 AsyncTask 返回一个值

android - 使用 API 从 Google Play 开发者那里获取统计信息

android - 减去 R 中数据框中的列。 A-B=已校正 A。这些是传感器中从数据帧 B 寻求校正的抽象值

android - kotlin Lateinit 与计算属性