Ily*_*man 9 android kotlin dagger-hilt
根据 Hilt 教程,ViewModels 需要通过以下方式注入:
@HiltViewModel
class ExampleViewModel @Inject constructor(
private val savedStateHandle: SavedStateHandle,
private val repository: ExampleRepository
) : ViewModel() {
...
}
Run Code Online (Sandbox Code Playgroud)
但是,就我而言,我想使用一个接口:
interface ExampleViewModel()
@HiltViewModel
class ExampleViewModelImp @Inject constructor(
private val savedStateHandle: SavedStateHandle,
private val repository: ExampleRepository
) : ExampleViewModel, ViewModel() {
...
}
Run Code Online (Sandbox Code Playgroud)
然后我想通过接口注入它
@AndroidEntryPoint
class ExampleActivity : AppCompatActivity() {
private val exampleViewModel: ExampleViewModel by viewModels()
...
}
Run Code Online (Sandbox Code Playgroud)
如何使这项工作有效?
viewModels需要ViewModel班级的孩子
val viewModel: ExampleViewModel by viewModels<ExampleViewModelImp>()
Run Code Online (Sandbox Code Playgroud)
Amj*_*reh -1
注入接口非常简单,你传递一个接口,但注入注入的是一个Impl。
@InstallIn(ViewModelComponent::class)
@Module
class DIModule {
@Provides
fun providesRepository(): YourRepository = YourRepositoryImpl()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8056 次 |
| 最近记录: |