jetpack compose 在两个页面间切换

jetpack compose 在两个页面间切换:

  1. 创建两个Compose页面:定义两个简单的Composable函数,分别代表两个页面。

    kotlin 复制代码
    import androidx.compose.foundation.layout.Arrangement
    import androidx.compose.foundation.layout.Column
    import androidx.compose.foundation.layout.fillMaxSize
    import androidx.compose.material.Button
    import androidx.compose.material.Text
    import androidx.compose.runtime.Composable
    import androidx.compose.ui.Alignment
    import androidx.compose.ui.Modifier
    import androidx.navigation.NavController
    
    @Composable
    fun FirstPage(navController: NavController) {
        Column(
            modifier = Modifier.fillMaxSize(),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center
        ) {
            Text("这是第一页")
            Button(onClick = { navController.navigate("second_page") }) {
                Text("去第二页")
            }
        }
    }
    
    @Composable
    fun SecondPage(navController: NavController) {
        Column(
            modifier = Modifier.fillMaxSize(),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center
        ) {
            Text("这是第二页")
            Button(onClick = { navController.popBackStack() }) {
                Text("返回第一页")
            }
        }
    }
  2. 设置导航图 :使用NavHostNavController来管理页面切换。

    kotlin 复制代码
    import androidx.compose.runtime.Composable
    import androidx.navigation.compose.NavHost
    import androidx.navigation.compose.composable
    import androidx.navigation.compose.rememberNavController
    import com.treevalue.jetsnack.pages.FirstPage
    import com.treevalue.jetsnack.pages.SecondPage
    
    @Composable
    fun AppNavigation() {
        val navController = rememberNavController()
        NavHost(navController = navController, startDestination = "first_page") {
            composable("first_page") { FirstPage(navController) }
            composable("second_page") { SecondPage(navController) }
        }
    }
  3. 在主活动中使用 :主活动中调用AppNavigation

    kotlin 复制代码
    class MainActivity : ComponentActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContent {
                AppNavigation()
            }
        }
    }
相关推荐
小蜜蜂dry1 天前
nestjs实战-权限二:角色模块
前端·后端·nestjs
AskHarries1 天前
权限模型:Shell、Browser、文件读写的安全边界
服务器·前端·网络
小蜜蜂dry1 天前
nestjs实战-权限一: 菜单模块
前端·后端·nestjs
用户5812441541571 天前
GemDesign MCP协议详解:从原型到代码的完整技术链路
前端
半个烧饼不加肉1 天前
JS 底层探究-- 事件循环
开发语言·前端·javascript
goDeep1 天前
useMemo 和 useCallback 的区别,我终于搞懂了
前端
小亮学前端1 天前
在1Panel中部署Nuxt项目
前端·vue.js
产品研究员1 天前
AI生成可用的React交互代码实测:Lovable vs Stitch vs Paico
前端·react.js·aigc
labixiong1 天前
Prompt 工程:当一段文字学会了思考、行动与统治
前端·ai编程
biubiubiu_LYQ1 天前
入门开发者必学篇之JS事件循环:为什么你的代码输出总翻车?
前端·javascript