[英]Using data-binding in android error: package *.*.databinding does not exist
[英]Android Databinding : package does not exist
我正在嘗試使用 Android 的數據綁定。
我不能再構建我的項目了。 我收到此錯誤:
“錯誤:(13、46)錯誤:package ch.company.project.databinding 不存在”
這是我的gradle
:
和
這里是 gradle output:
感謝伊吉特!
問題不是直接鏈接到 Android 數據綁定。 項目中存在錯誤(某些變量未正確設置)
我建議將 gradle 與“--debug 和--stacktrace”一起使用以獲取更多信息,它有很大幫助。
早些時候我的包名稱是“com.xyz.abc.Models”將包名稱更改為所有小寫字母“Models”->“models”
解決了這個問題。
錯誤不是數據綁定包,而是語法或邏輯錯誤。 例如,您的 POJO 中有屬性“lastName”,但在布局中它是android:text="@{user.lastname}"
。
檢查您的“布局”並進行重建項目。
我對接受的答案不滿意,它告訴您在沒有提示的情況下進行堆棧跟蹤。
以下是導致此問題的一些可能原因。 檢查您是否沒有執行以下任何操作。
基本上Android DataBinding還沒有那么成熟。 如果沒有適當的錯誤,它將失敗很多次。
因此,如果您遇到諸如package ch.company.project.databinding does not exist"
類的問題package ch.company.project.databinding does not exist"
。
首先,一一檢查您最近編輯的布局xml是否有錯誤(對於錯誤的imports
和variables
)。 在這種情況下,我通常不會得到正確的錯誤。
檢查布局元素中綁定塊 ({...}) 中的數據綁定語法是否有錯誤。 在一種布局中工作后始終重建(而不是構建)項目。
檢查您的@BindingAdapter
方法是否具有正確的參數。 例如imageUrl
綁定適配器將接受ImageView
或View
作為第一個參數。
在一種布局中完成工作后,您應該始終重建項目。
如果您無法通過上述步驟找到錯誤--debug and --stacktrace
在編譯選項中嘗試--debug and --stacktrace
File> Settings> Build, Execution, Deployment> Compiler> Command-line Options
確保您的包名稱以小寫字母開頭。 在我的情況下,經過兩個小時的斗爭后問題解決了
我的項目有類似的問題
你可以試試:
在我的特殊情況下,我使用的是 Dagger 2。這個包錯誤出現在很多類中,與原始錯誤沒有任何關系:依賴注入錯誤。
快樂提醒:在您的堆棧跟蹤中滾動更多內容以了解真正的問題是什么。
我被同樣的錯誤困了幾個小時。 在嘗試了 stackoverflow 的幾種解決方案后,我使用穩定的 gradle 依賴項更新了我的項目。
仍然沒有解決,但是具有相同的 gradle 依賴項DataBinding
在我的另一個項目中運行良好。
所以,我使用資源管理器去項目文件夾並刪除了2 個東西。
- 構建文件夾
- .idea/libraries 中的所有文件
之后我同步了項目,它繼續工作得很好。
我得到了錯誤:
錯誤:(9, 46) 錯誤:包 com.company.www.bar.databinding 不存在。
我只是刪除“=”符號。 它對我有用
由此 :
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@={()->activity.onButtonClick()}"/>
到 :
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{()->activity.onButtonClick()}"/>
確保您在布局中引用的模型字段具有public
訪問修飾符
改變
{ databinding = true}
到
buildFeatures{
dataBinding = true
}
要消除此錯誤,只需將完整的布局設計包含在activity_main.xml
文件中的普通布局標記中。
在尋找解決方案上浪費了很多時間后,這對我有用。 試一試。
如果你試過這個步驟
android.databinding.enableV2=false
android.enableExperimentalFeatureDatabinding=true
並檢查所有 xml 文件看起來不錯。 那么你應該使用這個解決方案,在項目級別 build.gradle 中添加以下代碼
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xmaxerrs" << "1000"
}
}
}
這會給你確切的錯誤,你有實際的錯誤解釋:上面的代碼會增加編譯錯誤的大小
包名必須開始以小寫字母。 否則,綁定庫無法理解它是類還是包。 此外,您不需要用小寫字母來完成所有操作。
示例,錯誤用法:
package com.programmerbrain.activity.ContactInfo; //Problem is ContactInfo, 'C'.
示例,真正的用法:
package com.programmerbrain.activity.contactInfo; //Solution is contactInfo, 'c'.
就我而言,我遵循 android 文檔:
buildFeatures {
viewBinding true
}
使用“=”代替空格
buildFeatures {
viewBinding = true
}
嘗試按照Refactor
-> migrate to androidx
並在build.grade(:app)
implementation 'androidx.appcompat:appcompat:1.0.0'
或者
implementation 'androidx.databinding:databinding-runtime:1.0.0'
如果您遇到這個問題是因為您在 Android Studio Artic Fox 中切換到 JDK11 並且您的視圖綁定在 UI 中中斷但在執行期間沒有中斷,那么請注意這是一個已知問題,應該在 Bumble Bee 中解決:
https://issuetracker.google.com/issues/180946610
當前的修復是切換回 JDK8(或安裝 Bumble Bee 金絲雀版本)。
確保如果您的布局文件名以以下格式命名: <name>_activity.xml
,則您的綁定類名稱也符合以下格式: <name>ActivityBinding
對我來說,將我的布局文件名從activity_login.xml
更改為login_activity.xml
解決了這個問題,因為我的綁定類名稱是LoginActivityBinding
。
這是Android 布局和綁定表達式頁面中提到的一個例外:
為每個布局文件生成一個綁定類。 默認情況下,類的名稱基於布局文件的名稱,將其轉換為 Pascal 大小寫並為其添加 Binding 后綴。 上面的布局文件名是activity_main.xml 所以對應的生成類是ActivityMainBinding
如果您在布局中使用 model,請確保您沒有 model 和 package 名稱應以小寫字母開頭。
我將我的從 Model>Model.class 更改為 modelPac>Model.class
就我而言,問題出現在我創建productFlavors
並設置sourceSets
時。 改變
sourceSets {
develop {
res.srcDirs = ['myApp/src/develop/res']
}
到
sourceSets {
develop {
res.srcDirs = ['src/develop/res']
}
}
解決了我的問題。
希望這會對某人有所幫助。 在我的例子中,我使用的是 ZoomImageView,我在 Java 文件中編程並在 XML 中使用。當我將我的項目遷移到另一個項目時。 package 名稱已更改,我將相同的 xml 文件復制到新項目。 這引起了沖突。
我變了
<com.coremacasia.okk.utility.ZoomImageView
android:id="@+id/zoomImage"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
到
<in.theclink.clink.utility.ZoomImageView
android:id="@+id/zoomImage"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.