1. 理解Compose路由跳转的核心概念
现代移动应用开发中,页面导航和路由跳转是基础但至关重要的功能。Jetpack Compose作为Android官方推荐的声明式UI框架,其导航机制与传统基于Fragment的导航有着本质区别。Compose导航库(Navigation Compose)专门为Compose设计,通过维护一个返回栈来管理屏幕之间的跳转关系。
在Compose中,每个可导航的界面被称为一个"目的地"(destination),这些目的地通过NavController进行统一管理。NavController相当于导航系统的大脑,负责记录当前栈状态、处理跳转逻辑以及管理返回栈。与XML导航不同,Compose导航完全通过代码定义,这使得导航逻辑可以更灵活地与其他Compose组件交互。
重要提示:从1.6.0版本开始,Navigation Compose API已趋于稳定,建议在新项目中直接使用最新稳定版,避免早期beta版本的API变更问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境配置与依赖引入
2.1 添加Gradle依赖
首先需要在模块级build.gradle文件中添加导航组件依赖。当前最新稳定版本为2.7.7(截至2024年1月),建议始终使用官方文档推荐的最新版本:
kotlin复制dependencies {
implementation("androidx.navigation:navigation-compose:2.7.7")
// 如果使用ViewModel等架构组件
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
}
同步项目后,确保以下配置正确:
- 使用Android Studio Giraffe或更高版本
- Kotlin版本1.9.0+
- 启用Compose编译器插件1.5.3+
2.2 基础项目结构准备
推荐按功能模块组织导航结构,典型项目目录结构示例:
code复制src/main/java/com/example/app/
├── navigation/ # 导航相关类
│ ├── NavGraph.kt
│ └── Destinations.kt
├── features/ # 各功能模块
│ ├── home/
│ ├── profile/
│ └── settings/
└── MainActivity.kt
这种结构将导航逻辑与UI实现分离,便于后期维护和扩展。对于小型项目,也可以直接将导航定义放在MainActivity中。
3. 构建基础导航图
3.1 创建NavHost和导航图
NavHost是导航的容器组件,需要在顶层Composable中声明。以下是基础实现:
kotlin复制@Composable
fun MyApp() {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = "home" // 初始路由
) {
composable("home") {
HomeScreen(onNavigateToProfile = {
