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.pswp.cn/web/11355.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11355.shtml
英文地址,請注明出處:http://en.pswp.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」按鈕,獲取請求所需要的憑證: 如果你尚未登錄或注冊,會自動跳轉到登錄頁面邀請您來注冊和登…