您好,登錄后才能下訂單哦!
ViewBinding怎么在Android中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
過于冗余
findViewById 對應所有的View 都需要書寫以下 findViewById(R.id.xxx) 的方法
不安全
所謂的不安全就是分為兩個 首先是空類型的不安全,findViewById 又可能返回為null,導致程序異常
第二: 強轉的不安全,findViewById。 將 對應的id 需要強轉成對應的View 例如
TextView tv = findViewById(R.id.textview);
一旦我的類型給錯了,就會出現異常,比如將textview 錯強轉成 ImageView
最近這段時間在學習Kotlin,突然發現谷歌已經把kotlin-android-extensions插件廢棄,目前推薦使用ViewBinding來進行替代。
ViewBinding的目的:避免編寫findViewById
使用ViewBinding前的注意事項:
1、確保你的Android Studio是3.6或更高的版本
2、在build.gradle中加入以下配置:buildFeatures { viewBinding true }
使用ViewBinding的步驟:
1、首先要調用activity_main.xml布局文件對應的Binding類,也就是ActivityMainBinding的inflate()函數去加載該布局,inflate()函數接收一個LayoutInflater參數,在Activity中是可以直接獲取到的
2、接下來調用Binding類的getRoot()函數可以得到activity_main.xml中根元素的實例
3、把根元素的實例傳入到setContentView()函數當中,這樣Activity就可以成功顯示activity_main.xml這個布局的內容了。
話不多說,接下來是代碼部分:
1、在build.gradle中加入:buildFeatures { viewBinding true }
2、將要使用ViewBinding的Activity打開,將代碼改成如下的樣子:
這里要注意的是,如果在別的Activity中要使用binding的話(如:我現在的kt文件叫做LoginActivity.kt,那么代碼如下:
class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityLoginBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) binding.webView } }
3、此時就可以通過binding.控件id名進行調用
Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。