ViewBinding的使用(因為kotlin-android-extensions插件的淘汰)

書籍:

《第一行代碼 Android》第三版

開發環境:

Android Studio Jellyfish | 2023.3.1

問題:

3.2.4在Activity中使用Toast章節中使用到了kotlin-android-extensions插件,但是該插件已經淘汰,根據網上了解,目前使用了新的技術VewBinding替代了改功能.

ViewBinding的使用

在gradle中使能VewBinding

在app級別的build.gradle.kts中的android閉包中添加buildFeatures,設置viewBinding 為 true,這里請注意,好像不同版本的android studio對于這個使能的寫法還不一致,這個也是導致了折騰了兩天都沒有搞清楚這玩意的原因.目前我的版本中的寫法如下:

buildFeatures {viewBinding = true}

這個build.gradle.kts所在路徑在項目根目錄/app/build.gradle.kts.

編寫layout布局文件

由于我一開始創建的是Add No Activity的項目,所以我的項目中是沒有layout的,需要在項目根目錄/app/src/main/res/下創建一個layout目錄,并在layout中創建一個名為first_layout.xml的布局文件,請記住這個名字,后面會用到.

創建first_layout.xml文件時會自動生成一些代碼,目前我們不關注,先添加一個簡單的按鈕,代碼如下:

<Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button 1"/>

Sync同步build.gradle.kts文件生成與布局文件對應的類

我們編寫了一個first_layout.xml布局文件了,如果想要通過ViewBinding能正常使用該布局文件中的控件,則需要將該布局文件first_layout.xml生成對應的FirstLayoutBinding.java類.

Sync的方法:打開build.gradle.kts文件,在菜單中Run->Run?build.gradle.kts即可同步修改的build.gradle.kts到項目中.

在創建了first_layout.xml后Sync了build.gradle.kts文件后,可在項目路徑ActivityTest\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\activitytest\databinding下自動生成與first_layout.xml布局文件對應的FirstLayoutBinding.java類.

xml布局文件生成對應的類的命名規則:將 XML 文件的名稱轉換為駝峰式大小寫,并在末尾添加“Binding”,如first_layout.xml生成FirstLayoutBinding.java.

不希望生成某布局文件對應的類的方法

若以后創建了很多布局文件,并且可能不需要使用到這些布局文件,那么在Sync build.gradle.kts的時候不希望生成對應的類.那么可以在這些布局文件中加上兩句代碼,即可讓gradle忽略此布局文件.

如first_layout.xml,不想生成對應的FirstLayoutBinding.java,則在first_layout.xml文件中,增加以下兩句代碼即可,xmlns:tools="http://schemas.android.com/tools"表示導入tools工具,tools:viewBindingIgnore="true"表示忽略ViewBinding.

    xmlns:tools="http://schemas.android.com/tools"tools:viewBindingIgnore="true"

此時,如果去Sync build.gradle.kts文件,那么在項目路徑ActivityTest\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\activitytest\databinding\不會看到對應的FirstLayoutBinding.java類.

麻煩把這兩句代碼刪除,并重新Sync? build.gradle.kts一下,因為我們接下來要使用FirstLayoutBinding.java中的控件了.

在Activity中使用布局中的控件

現在,我們已經新建好了布局文件first_layout.xml,并且成功將其生成對應的FirstLayoutBinding.java類,那么我們現在開始使用first_layout.xml中定義按鈕button1.

import com.example.activitytest.databinding.FirstLayoutBindingclass FirstActivity : AppCompatActivity() {private lateinit var mainBinding: FirstLayoutBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.first_layout)mainBinding = FirstLayoutBinding.inflate(layoutInflater)setContentView(mainBinding.root)mainBinding.button1.setOnClickListener {Toast.makeText(this, "You are the best!", Toast.LENGTH_SHORT).show()}}
}

因為要引用FirstLayoutBinding.java類中的控件,所有要先將這個類導入:

import com.example.activitytest.databinding.FirstLayoutBinding

然后定義一個FirstLayoutBinding變量,

private lateinit var mainBinding: FirstLayoutBinding

調用生成的綁定類中包含的靜態 inflate() 方法。此操作會創建該綁定類的實例以供 Activity 使用
通過調用 getRoot() 方法或使用 Kotlin 屬性語法獲取對根視圖的引用。

mainBinding = FirstLayoutBinding.inflate(layoutInflater)
setContentView(mainBinding.root)

直接使用FirstLayoutBinding中的button1按鈕控件實現點擊該按鈕的時候觸發一個Toast提示信息.

mainBinding.button1.setOnClickListener {Toast.makeText(this, "You are the best!", Toast.LENGTH_SHORT).show()
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38422.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38422.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UE4_材質_材質節點_DepthFade

一、DepthFade參數 DepthFade&#xff08;深度消退&#xff09;表達式用來隱藏半透明對象與不透明對象相交時出現的不美觀接縫。 項目說明屬性消退距離&#xff08;Fade Distance&#xff09;這是應該發生消退的全局空間距離。未連接 FadeDistance&#xff08;FadeDistance&a…

【數據分析“三劍客”】—— Pandas

Pandas Pandas 是基于NumPy的一種工具&#xff0c;該工具是為解決數據分析任務而創建的, Pandas提供了大量能使我們快速便捷地處理數據的函數和方法。Pandas與出色的 Jupyter工具包和其他庫相結合&#xff0c;Python中用于進行數據分析的環境在性能、生產率和協作能力方面都是…

光照老化試驗箱:材料耐久性的“時間加速器”

光照老化試驗箱&#xff1a;材料耐久性的“時間加速器”概述 光照老化試驗箱是一種模擬自然光照條件下材料老化過程的設備&#xff0c;廣泛應用于材料科學領域的耐久性能評估。通過模擬日光中的紫外線、熱輻射等環境因素&#xff0c;加速材料老化過程&#xff0c;以此來驗證材…

redhawk:tech file與lefdef layer name不匹配問題

我正在「拾陸樓」和朋友們討論有趣的話題&#xff0c;你?起來吧&#xff1f; 拾陸樓知識星球入口 一些工藝廠商給的redhawk tech file是加密的&#xff0c;讀完tech file再讀lef/def會報錯&#xff0c;根本不知道問題在哪&#xff0c;他們一般會搭配給一個layer map&#xff…

分解+降維+預測!多重創新!直接寫核心!EMD-KPCA-Transformer多變量時間序列光伏功率預測

分解降維預測&#xff01;多重創新&#xff01;直接寫核心&#xff01;EMD-KPCA-Transformer多變量時間序列光伏功率預測 目錄 分解降維預測&#xff01;多重創新&#xff01;直接寫核心&#xff01;EMD-KPCA-Transformer多變量時間序列光伏功率預測效果一覽基本介紹程序設計參…

【簡單講解神經網絡訓練中batch的作用】

&#x1f3a5;博主&#xff1a;程序員不想YY啊 &#x1f4ab;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f917;點贊&#x1f388;收藏?再看&#x1f4ab;養成習慣 ?希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出…

Maven依賴解析過程詳細講解

Maven依賴解析是一個遞歸的過程&#xff0c;涉及從項目的POM文件開始&#xff0c;逐步解析直接依賴和傳遞依賴。以下是詳細的解析過程&#xff1a; 讀取項目的POM文件&#xff1a; Maven首先讀取項目的POM文件 (pom.xml)&#xff0c;該文件定義了項目的直接依賴。 解析直接依賴…

STM32第十五課:LCD屏幕及應用

文章目錄 需求一、LCD顯示屏二、全屏圖片三、數據顯示1.顯示歡迎詞2.顯示溫濕度3.顯示當前時間 四、需求實現代碼 需求 1.在LCD屏上顯示一張全屏圖片。 2.在LCD屏上顯示當前時間&#xff0c;溫度&#xff0c;濕度。 一、LCD顯示屏 液晶顯示器&#xff0c;簡稱 LCD(Liquid Cry…

node_sqlite3.node is not a valid win32 application

electron打包報錯 使用electron在linux平臺打包含有sqlite3的項目為win32應用時在運行階段&#xff0c;有時會遇到下面的錯誤 node_sqlite3.node is not a valid win32 application出現該錯誤的原因主要是在64bit的linux環境中&#xff0c;sqlite3默認build出來的二進制文件不…

【Windows】Visual Studio Installer下載緩慢解決辦法

【Windows】Visual Studio Installer下載緩慢解決辦法 1.背景2.分析3.結果 1.背景 使用visual studio在線安裝包進行IDE安裝&#xff0c;發現下載幾乎停滯&#xff0c;網速幾乎為零。 經過排查并不是因為實際網絡帶寬導致。 這里涉及DNS知識&#xff1b; DNS&#xff08;Dom…

消防認證-防火卷簾

一、消防認證 消防認證是指消防產品符合國家相關技術要求和標準&#xff0c;且通過了國家認證認可監督管理委員會審批&#xff0c;獲得消防認證資質的認證機構頒發的證書&#xff0c;消防產品具有完好的防火功能&#xff0c;是住房和城鄉建設領域驗收的重要指標。 二、認證依據…

TP8 JS(html2canvas) 把DIV內容生成二維碼并與背景圖、文字組合生成分享海報

方法一&#xff1a;前端JS生成(推薦) 注意&#xff1a; 1.這個網頁只能截圖圖片效果代碼&#xff0c;其它任何html效果都不能有&#xff0c;不然截圖就不準確 2.如果要生成的圖片DIV內容中引用了第三個方的圖片&#xff0c;就是不使用同一個域名下的圖片&#xff0c;需要把后…

Python爬取淘寶商品評價信息實戰:從零到一的高效教程

引言&#xff1a;揭秘淘寶數據金礦 在電商領域&#xff0c;用戶評價是衡量產品優劣的金標準。作為Python爬蟲工程師&#xff0c;掌握從淘寶這座數據金礦中挖掘寶貴評價信息的技能至關重要。本文將帶你手把手實操&#xff0c;用Python爬蟲技術獲取淘寶商品的評價信息&#xff0…

Docker多階段構建Node.js應用程序

Node.js 應用程序 創建一個目錄來存放你的項目文件&#xff0c;然后在該目錄下創建以下文件。 package.json {"name": "docker-node-test","version": "1.0.0","description": "A simple Node.js app for Docker mu…

【折騰筆記】使用 PicList + Lsky Pro 對圖片進行雙重壓縮

前言 因為服務器的帶寬比較小,為了提高網站的訪問速度,網站內的圖片進行壓縮是必不可少的。另外將圖片轉換成WebP的格式可以減小文件大小、加快加載速度、支持高級特性(如透明度和動畫),以及減少存儲需求,為網站提供了顯著的性能。需要提前安裝好PicList客戶端和Lsky Pr…

最快33天錄用!一投就中的醫學4區SCI,幾乎不退稿~

【SciencePub學術】今天小編給大家推薦2本生物醫學領域的SCI&#xff0c;此期刊為我處目前合作的重點期刊&#xff01;影響因子0-3.0之間&#xff0c;最重要的是審稿周期較短&#xff0c;對急投的學者較為友好&#xff01; 醫學醫藥類SCI 01 / 期刊概況 【期刊簡介】IF&…

那些好用的 Vue3 的工具搭子!!【送源碼】

2020 年 9 月 18 日 Vue3 的正式發布已經過去了大約 3 年 9 個月左右&#xff01;&#xff01;&#xff01; 隨著 Vue3 版本的逐漸成熟&#xff0c;我們的前端世界也迎來了一系列令人振奮的更新和工具。Vue 生態圈的持續擴大&#xff0c;無疑為前端開發人員帶來了前所未有的便…

通過pycharm使用git和github的步驟

一、在Pycharm工具中配置集成Git和GitHub。 1.集成Git。 打開Pycharm, 點擊File-->Settins-->Version Control-->Git 然后在 Path to Git executable中選擇本地的git.exe路徑。如下圖&#xff1a; 2.集成GitHub 打開Pycharm, 點擊File-->Settins-->Version…

探索未來遠程調試新紀元——《串口網口遠程調試軟件》:無縫連接,高效調試

文章目錄 前言一、無縫連接&#xff0c;突破距離限制二、高效調試&#xff0c;提升工作效率三、安全可靠&#xff0c;保護數據安全四、用戶友好&#xff0c;簡化操作流程五、軟件地址六、遠程調試軟件 七、基本操作1、訂閱主題2、連接3、串口調試4、網口調試 八、軟件地址結束語…

PO模式登錄測試

項目實踐 登陸項目測試 get_driver import page from selenium import webdriverclass GetDriver:driver Noneclassmethoddef get_driver(cls):if cls.driver is None:cls.driver webdriver.Edge()cls.driver.maximize_window()cls.driver.get(page.url)return cls.drivercl…