2015-10-20 123 views
1

如何爲您的視圖提供依賴關係(android.view.View)?我在匕首中看到的大多數示例都通過視圖的上下文來提供它們,但這看起來不太可組合。說如果我有一個雙窗格視圖,我希望封閉視圖爲主視圖和詳細視圖提供依賴關係。如果使用嵌套視圖中的上下文,則依賴關係仍將由活動提供,而不是包含視圖。一種解決方法是將上下文傳遞給嵌套視圖,但這會使通貨膨脹變得困難。這不是一個匕首問題。查看依賴關係注入

+0

什麼是您希望將某些東西注入視圖然後將該依賴項傳遞給子視圖而不是直接將註釋依賴注入子視圖的用例? – FriendlyMikhail

+0

該視圖以某種方式對其父項進行操作。如果回調通過上下文傳遞,它將在活動上運行(除非ContextWrapper)。通過方法傳遞迴調並不是很有趣(沒有最終) – DariusL

+0

想要在自定義視圖中注入DI(如CustomTextView擴展TextView),我應該在哪裏調用注入? –

回答

0

如果我正確理解你,你想傳遞一些依賴到你的視圖。據我所知,你可以像在Activity一樣注入依賴關係。使用Dagger 2,您可以定義組件,模塊,接口並使用@Inject註釋。它應該工作。我其實並沒有在Views中使用注射。我通常在「活動」中使用它們,並將一些數據(如字符串,整數,對象列表,自定義對象等)傳遞給視圖。我認爲,觀點應該儘可能簡單,我不確定在他們內部使用注射是否正確。也許這可能是一個非常具體的解決方案。

+0

我明白如何注入,我問是否有方法讓封閉視圖提供嵌套視圖的依賴關係。 – DariusL

+0

我認爲,找出最簡單的方法就是嘗試一下。我不知道是否可以從封閉視圖向嵌套視圖傳入注入,但是可以嘗試在嵌套視圖中初始化注入。或者,您可以在共享對象中初始化注入,這可以通過封閉和嵌套視圖來使用。也許最好在GitHub上通過問題提出這個問題,所以Dagger維護者可以給你更好的答案。 –

0

你可以只是做一個盲目遍歷了視圖樹,要求每位家長如果有一個噴油器就應該使用。

或者,你可以有封閉的觀點負責打針,而不是有嵌套視圖嘗試自己注射。畢竟,即使匕首示例指南顯示對象注入自己,通常情況下依賴注入應該是另一種方式:其他東西注入到我們中。