JetPack Compose Navigation

1. 导入依赖

  implementation("androidx.navigation:navigation-compose:2.7.7")

2.kotlin编译版本升级

 composeOptions {kotlinCompilerExtensionVersion = "1.5.0"}

3.插件版本升级

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {id("com.android.application") version "8.1.4" apply falseid("org.jetbrains.kotlin.android") version "1.8.10" apply falseid("androidx.navigation.safeargs.kotlin") version "2.7.7" apply false
}buildscript {repositories {google()}dependencies {val nav_version = "2.7.7"classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")}
}

4.开始编程

4.1 创建导航栏并传入简单参数

package com.tiger.jetpackcomposesideimport android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.navigation.NavType
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import com.tiger.jetpackcomposeside.ui.theme.JetpackComposeSideThemeclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {JetpackComposeSideTheme {Home()}}}
}@Composable
fun Home() {val navController = rememberNavController()NavHost(navController = navController, startDestination = "profile/1") {composable("profile/{userId}", arguments = listOf(navArgument("userId"){type = NavType.IntType})) {val userId = it.arguments?.getInt("userId")Profile(userId) {navController.navigate("ajax/${it}")}}composable("ajax/{userId}", arguments = listOf(navArgument("userId"){type = NavType.IntType})) {val userId = it.arguments?.getInt("userId")Ajax(userId) {navController.navigate("profile/${it}")}}}}// Define the Profile composable.
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Profile(int: Int?,onNavigateToFriendsList: (int:Int) -> Unit) {val text = remember {mutableStateOf("")}Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize()) {Column {Text(text = "profile的内容  AJAX传过来的内容${int}")TextField(value =text.value , onValueChange ={text.value = it} )Button(onClick = { onNavigateToFriendsList(text.value.toInt()) }) {Text("Go to Ajax")}}}}// Define the FriendsList composable.
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Ajax(int: Int?,onNavigateToProfile: (int:Int) -> Unit) {val text = remember {mutableStateOf("")}Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize()) {Column {Text(text = "Ajax的内容 Profile传过来的内容${int}")TextField(value =text.value , onValueChange ={text.value = it} )Button(onClick = { onNavigateToProfile(text.value.toInt()) }) {Text("Go to Profile")}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/11355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记:IEEE 1003.13-2003【POSIX PSE51接口列表】

一、POSIX PSE51接口列表 根据IEEE 1003.13-2003,整理了POSIX PSE51接口API(一共286个),每个API支持链接查看。 IEEE POSIX接口online搜索链接: The Open Group Base Specifications Issue 7, 2018 edition 详细内…

【python】模块与包

Python中的模块和包是组织和管理代码的重要工具。通过模块和包,你可以更好地管理和重用你的代码,使得代码更加模块化和可维护。 目录 前言 正文 一、模块 1、模块的分类 1)内置模块 python解释器中默认拥有的模块可以直接使用(…

用户需求甄别和筛选的6大标准

产品经理日常经常接收到大量的需求,并不是所有的需求都需要开发,需要进行甄别和筛选,这样有利于确保项目的成功、优化资源利用以及提高产品质量。 那么针对这些用户需求进行甄别或筛选的评判标准是什么?需求筛选可以说是初步的需求…

代码随想录-算法训练营day31【贪心算法01:理论基础、分发饼干、摆动序列、最大子序和】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第八章 贪心算法 part01● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和 贪心算法其实就是没有什么规律可言,所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其…

C++牛客周赛题目分享(2)小红叕战小紫,小红的数组移动,小红的素数合并,小红的子序列求和

目录 ​编辑 1.前言 2.四道题目 1.小红叕战小紫 1.题目描述 2.输入描述 3.输出描述 4.示例 5.题解与思路 2.小红的数组移动 1.题目描述 2.输入描述 3.输出描述 4.示例 5.题解与思路 3.小红的素数合并 1.题目描述 2.输入描述 3.输出描述 4.示例 5.题解与思…

增强For循环执行顺序探究

增强For循环执行顺序探究 增强For循环基础执行顺序探讨对于数组对于集合 经典示例数组示例集合示例(ArrayList) 注意事项结论 在Java编程中,增强型for循环(也称为“foreach”循环)是一种简洁而强大的迭代集合或数组元素…

super

super 一、理解 super.属性:在子类中,调用父类非私有化的成员属性 super.方法:在子类中,调用父类非私有化的成员方法 super():在子类构造方法中调用父类非私有的构造方法 二、案例 需求:编写中国人和日本人…

云原生新手和开源教育分论坛 01-Kubernetes 社区:从新手到影响者

2024年04月20日 上海KCD & Shanghai:https://community.cncf.io/events/details/cncf-kcd-shanghai-presents-kcd-shanghai-2024/视频观看:https://www.bilibili.com/video/BV1nD421T786/?spm_id_from333.999.0.0&vd_sourceae7b192be069682aabc…

【FreeRTOS 快速入门】-- 1、STM32工程移植FreeRTOS

目录 一、新建STM32工程 为了示范完整的移植过程,我们从0开始,新建一个标准的STM32点灯工程。 (本篇以CubeMX作示范,CubeIDE操作近同,可作对比参考) 1、新建工程 选择 芯片型号 新建工程 2、搜索芯片型号…

24年做抖音小店,你还停留在数据?别人都已经开始注重利润了

大家好,我是电商笨笨熊 一件事情持续做,一个项目持续深耕,意义到底是什么? 这句话我常常说,但很多人似乎走偏了实际意义; 尤其对于新手来说,做抖音小店总是向往某某老玩家多么牛的数据&#…

程序员健康指南:运动,让代码更流畅

程序员健康指南:运动,让代码更流畅 程序员,一个与电脑相伴的群体,长时间的久坐和高强度的脑力劳动是他们的日常。然而,久坐不仅影响体态,更对心脏健康构成威胁。根据《欧洲心脏杂志》的研究,中…

第十三节 huggingface的trainner解读与Demo

文章目录 前言一、trainer和TrainingArguments训练与预测完整Demo1、数据构建2、TrainingArguments构建3、Trainer初始化4、模型训练5、模型推理6、完整demo代码7、完整运行结果二、辅助函数1、yield返回内容2、迭代器中断恢复迭代demo3、yield from结构4、torch.Generator()的…

【PPT技巧】ppt文件打开就是只读模式,如何改为可编辑模式?

PPT文档打开是只读模式,如何改成可编辑文档呢?这需要分几种情况来说,所以今天将介绍几种方法帮助PPT只读文档改为可编辑文档。 方法一: 我们可以先查看一下文件属性,属性中有只读属性,当我们打开文档之后带…

C++入门——引用(2)

前言 上一节我们开始学习了C,并且对C有了初步的了解,这一节我们继续学习C的基础,那么废话不多说,我们正式进入今天的学习 C中的引用 1.1引用的概念 引用不是新定义一个变量,而是给已存在变量取了一个别名&#xff0…

uniapp小程序:大盒子包裹小盒子但是都有点击事件该如何区分?

在开发过程中我们会遇到这种情况,一个大盒子中包裹这一个小盒子,两个盒子都有点击事件,例如: 这个时候如果点击评价有可能会点击到它所在的大盒子,如果使用css中的z-index设置层级的话如果页面的盒子多的话会混乱&…

Spring解决泛型擦除的思路不错,现在它是我的了。

你好呀,我是浮生。 Spring 的事件监听机制,不知道你有没有用过,实际开发过程中用来进行代码解耦简直不要太爽。 但是我最近碰到了一个涉及到泛型的场景,常规套路下,在这个场景中使用该机制看起来会很傻,但…

15、FreeRTOS 软件定时器

文章目录 一、什么是定时器?1.1 定时器的理解1.2 软件定时器的特性 二、 软件定时器的上下文2.1 守护任务2.2 守护任务的调度2.3 回调函数 三、软件定时器的函数3.1 创建3.2 删除3.3 启动/停止3.5 修改周期3.6 定时器ID 四、案例4.1 一般使用4.2 消除抖动 一、什么是定时器? …

怎么解决ModuleNotFoundError: No module named ‘httpx_sse‘

解决方案 pip install httpx_sseLooking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting httpx_sse Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-n…

Android 14.0 frameworks添加自定义服务

1.概述 在14.0的系统rom定制化产品开发中,对于提供系统接口来给app调用,来控制系统的某些功能,所以需要添加自定义服务也是常有功能,因此需要来在frameworks层中添加自定义系统服务的功能 2.frameworks添加自定义服务的核心类 frameworks\base\services\java\com\android…

Midjourney Imagine API 申请及使用

Midjourney Imagine API 申请及使用 申请流程 要使用 Midjourney Imagine API,首先可以到 Midjourney Imagine API 页面点击「Acquire」按钮,获取请求所需要的凭证: 如果你尚未登录或注册,会自动跳转到登录页面邀请您来注册和登…