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
将导入替换import androidx.navigation.compose.composable为import com.google.accompanist.navigation.animation.composable。这是 accompanist github 上列出的问题之一。
| 归档时间: |
|
| 查看次数: |
3819 次 |
| 最近记录: |