首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><identifier>期望android

<identifier>期望android
EN

Stack Overflow用户
提问于 2020-08-11 16:32:38
回答 1查看 2.2K关注 0票数 3

我想在我的应用程序中试用Hilt。

我做了所有的步骤来将Hilt添加到我的应用程序中,但是我的问题是hilt没有显示出我的BaseFragment中的错误,他说:

错误:预期topLevelClass = BaseFragment.class ^error: Hilt

BaseFragment很简单:

代码语言:javascript
复制
@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,他们将禁止带有类型参数的基类-

EN

回答 1

Stack Overflow用户

发布于 2020-08-14 13:40:33

正如我已经提到的这里,这可能是Hilt内部的一个bug。

查看相关的github问题:https://github.com/google/dagger/issues/2042

您可以通过将@AndroidEntryPoint从带有参数的抽象类移动到没有类型参数的子类中来解决这个问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63362532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档