[英]Android Hilt injecting interface to a viewmodel impelemented by an activity
[英]Injecting Interface to an App Activity - Hilt+Android
DI 的新手。 假設在模塊 ABC 中有一個接口 XYZ,它被主應用程序項目用作依賴項。 我想將該接口 XYZ 注入到主項目中的 MainActivity 中。 請在下面查看我的嘗試方式。
ABC 模塊內容
XYZ
interface XYZ {
fun init()
}
TestView class實現接口
class TestView: XYZ {
override fun init(){
}
}
主要項目內容
應用模塊 class
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
fun xyz(): XYZ = TestView()
}
主要活動
@AndroidEntryPoint
class MainActivity : AppCompactActivity() {
@Inject lateinit var xyz : XYZ
override onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
xyz.init()
}
}
提前致謝。
我不是高級開發人員,所以請對我的話持保留態度;)
如果這有什么問題,請告訴我。
是和否(見下文)
它會起作用,有些人更喜歡以這種方式提供界面,
但是最好使用@Binds(它生成的代碼更少,這使您的應用程序更小並且構建時間更快)
你可以在這里找到如何使用它
如果我對另一個 class 使用相同的界面,讓我們說 TestView2 並在主項目的另一個活動中使用它。 我也可以在 AppModule class 中提供該視圖嗎? 如果是,我如何將它與第一個區分開來,因為兩者都將使用相同的界面?
如果您創建 2 個返回相同類型的提供方法,匕首將不知道使用哪個方法來提供您的依賴項,這就是為什么您可以命名您的提供者(使用 @Named 注釋),您可以在此處找到更多相關信息
(另外,只是評論:不再真正推薦在一個應用程序中使用多個活動,我個人反對)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.