2017-07-19 58 views
0

我有一個MVVM項目,我有ViewModel類擴展BaseObservable。現在,如果將@Inject類放入我的ViewModel,那麼編譯將失敗,並顯示許多錯誤,如:「error:package xxx.databinding does not exist」匕首和數據綁定

我可以找到導致使用某種gradle技術的實際錯誤嗎?數據綁定真的支持@Inject嗎?

編輯:

代碼是完全一樣https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding/

,在我所添加的匕首,我想@Inject一個倉庫到延伸BaseObservable視圖模型。只要我@Inject添加到視圖模型,然後我不能編譯

+0

請顯示代碼 –

+0

添加了我已克隆的示例項目的鏈接以及我所做的更改的說明。 – Prasanth

回答

0

的一般方法固定這樣的問題是要找到那些綁錯誤數據綁定。一旦這些問題得到解決,您的數據綁定錯誤將會消失。數據綁定只是大聲抱怨,因爲構建失敗之前,它可以做它的事情。不幸的是,這往往感覺就像在乾草堆裏找到針。

如果您有很多錯誤,則可能需要增加顯示的最大錯誤數,否則在打印實際根本原因之前錯誤輸出可能會結束。請看這裏:https://stackoverflow.com/a/35707088/436417

Dagger的@Inject與數據綁定通用兼容。

+0

我已經知道你在說什麼了,我只是想看看錯誤是什麼。感謝您的鏈接。太糟糕谷歌不提供這些作爲默認的gradle模板。原來這是最簡單的錯誤「匕首不支持注入私人領域」。非常感謝您的幫助。 – Prasanth

0

匕首與數據綁定的工作,你有錯誤的設置。

當您得到error: package xxx.databinding does not exist這意味着代碼生成失敗,並且因爲數據綁定和匕首使用代碼生成問題可能在兩個組件的設置中。 根據你的描述,它看起來像你沒有正確配置匕首,即沒有設置它應該如何提供你注射的對象。

確保你沒有「滿意依賴」下的行動和「建設圖」從這裏https://google.github.io/dagger//users-guide.html