👨‍💻
Mason 開發筆記
  • ✅專案經歷
    • 一加專案經驗
    • 應用開發筆記
  • GuessNumber Kotlin Firebase問題總匯
  • Git 常用指令
  • Vim 學習記錄
  • Kotlin Scope function
  • Android
  • PRIVACY NOTICE
  • 常用指令
  • 極速開發系列
  • Firebase AdMob 開發紀錄
  • Coroutine 紀錄
  • Kotlin Flow
  • Android
    • Data binding
    • Android Livedata
    • Unit Test
Powered by GitBook
On this page
  1. Android

Data binding

PreviousKotlin FlowNextAndroid Livedata

Last updated 2 years ago

Databinding 優點: 在編譯期間就可以先確認變數及操作行為能夠正確呼叫,避免過去在運行期間呼叫失敗後直接crash。

QA:

使用DataBindingUtil 呼叫setContentView 或是 inflate 常常會失敗,看起來是<View>Binding型別不同,無法透過呼叫DataBindingUtil回傳的類型轉變回ViewBinding的類型?

ANS: DataBindingUtil 透過 setContentView 或是 inflate 的回傳型別為 ViewDataBinding,這個型別只有在layout.xml裡面已經實作 data binding 才會回傳為 ViewDataBinding;如果layout沒有實作data binding,那麼layout.xml自動生成的<View>Binding檔案會是ViewBinding型別,而ViewDataBinding 繼承了 ViewBinding,因此view binding的回傳型別不可以直接使用DataBindingUtil 。

而view binding 和 data binding,產生的檔案名稱皆為<View>Binding,但卻可能繼承自不同型別,因此要使用DataBindingUtil需要特別注意是否已經在layout.xml裡面實作data binding。

方便起見,<View>Binding 型別已經在layout.xml生成時確定,直接使用<View>Binding.inflate會自動回傳正確的型別,就不會像是DataBindingUtil有錯誤的狀況產生。(理想的狀況還是要在開發時確認好每個layout對應的binding)

DataBindingUtil.java :

DataBindingUtil.setContentView()
DataBindingUtil.inflate()
Data binding generated.
View binding generated.