我试图通过在一个抽象基类中移动一些ViewModel实例化来切割Dagger的一些样板文件,但找不到很好的方法来实现这一点.我的目的是从我的基本片段实例化我的所有ViewModel,以便它们可以被所有子片段使用,而不需要它们自己进行实例化.我的问题在于使用通用(VM)检索ViewModel,具体来说是:.get(viewModel::class.java)
.我还try 了.get(VM::class.java)
,这是不允许的
BaseFragment个
abstract class BaseFragment<VM : ViewModel> : Fragment() {
@Inject lateinit var viewModelFactory: ViewModelProvider.Factory
lateinit var viewModel : VM
override fun onAttach(context: Context?) {
super.onAttach(context)
viewModel = ViewModelProviders.of(this, viewModelFactory).get(viewModel::class.java)
}
}
ViewModelProviders.get(...) method signature个
public <T extends ViewModel> T get(@NonNull Class<T> modelClass)
这有可能吗?