我想在我的应用程序中试用Hilt。
我做了所有的步骤来将Hilt添加到我的应用程序中,但是我的问题是hilt没有显示出我的BaseFragment中的错误,他说:
错误:预期topLevelClass = BaseFragment.class ^error: Hilt
BaseFragment很简单:
@AndroidEntryPoint
abstract class BaseFragment<T : ViewModel,D : ViewDataBinding>() : Fragment() {
@Inject
lateinit var viewModel: T by viewModels()
}对于viewModel by viewModels(),请告诉我
不能使用'T‘作为具体化类型参数。用类代替。类型'Lazy‘没有方法'setValue(BaseFragment,KProperty<*>,T)’,因此它不能充当var (读-写属性).**的委托。
所以我用了工厂,就像我在匕首里用的一样,它起作用了,但我的问题仍然是
BaseFragment
我很感激你能提前帮我,谢谢
编辑: github上的 oppen这个问题,他们说这是一个bug,他们将禁止带有类型参数的基类-
发布于 2020-08-14 13:40:33
正如我已经提到的这里,这可能是Hilt内部的一个bug。
查看相关的github问题:https://github.com/google/dagger/issues/2042
您可以通过将@AndroidEntryPoint从带有参数的抽象类移动到没有类型参数的子类中来解决这个问题。
https://stackoverflow.com/questions/63362532
复制相似问题