从 NavHost 迁移到 AnimatedNavHost

gia*_*ale 7 android uinavigationcontroller kotlin android-studio android-jetpack-compose

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

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

java.lang.NoSuchMethodError:没有静态方法rememberNavController(Landroidx/compose/runtime/Composer;I)Landroidx/navigation/NavHostController; 在类 Landroidx/navigation/compose/NavHostControllerKt 中;或其超类(“androidx.navigation.compose.NavHostControllerKt”的声明出现在 /data/app/~~3ss2A6J7mK0SYONGyPJOUw==/com.example.soschool-o-E9YEHWVSYOUf5K7L3c5Q==/base.apk!classes11.dex 中)

现在我将附加感兴趣的两个类:
NavigationGraph:

@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()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

主要活动:

@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)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在没有东西的情况下运行应用程序时,Animated一切都很好,但是当我更改AnimatedNavController()为打开 rememberAnimatedNavController()并且MainActivity应用程序崩溃并说出我写的错误时。NavHostAnimatedNavHost

Rud*_*ave 1

将导入替换import androidx.navigation.compose.composable为import com.google.accompanist.navigation.animation.composable。这是 accompanist github 上列出的问题之一。