【发布时间】:2019-07-18 10:33:46
【问题描述】:
我想要做什么:
我正在尝试将 viewModel 链接到活动并在两者之间使用工厂
在MainActivity.kt
KtMainActivityViewModelFactory ktMainActivityViewModel = ViewModelProviders.of(this,ktMainActivityViewModelFactory).get(KtMainActivityViewModel::class.java)
KtMainActivityViewModelFactory.kt
class KtMainActivityViewModelFactory : ViewModelProvider.Factory {
private val movieRepository: MovieRepository
private val database: MoviesAppDatabase
private val dataservice: MovieDataService
@Inject
constructor(movieRepository: MovieRepository, database: MoviesAppDatabase, dataservice: MovieDataService) {
this.movieRepository = movieRepository
this.database = database
this.dataservice = dataservice
}
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return KtMainActivityViewModelFactory(movieRepository, database, dataservice) as T
}
}
KtMainActivityViewModel.kt
class KtMainActivityViewModel : ViewModel() {
private val movieRepository: MovieRepository
private val database: MoviesAppDatabase
private val dataservice: MovieDataService
constructor(movieRepository: MovieRepository, database: MoviesAppDatabase, dataservice: MovieDataService) : super() {
this.movieRepository = movieRepository
this.database = database
this.dataservice = dataservice
}
}
【问题讨论】: