首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dagger Hilt :- kotlin.UninitializedPropertyAccessException: lateinit属性homeView尚未在l̥Dagger Hilt中初始化

Dagger Hilt :- kotlin.UninitializedPropertyAccessException: lateinit属性homeView尚未在l̥Dagger Hilt中初始化
EN

Stack Overflow用户
提问于 2021-09-06 05:24:45
回答 1查看 414关注 0票数 0

这是我的viewmodel类

代码语言:javascript
复制
class HomeFeedViewModel( val applicationContext: Context, val repo: repository) : ViewModel() {

lateinit private var homeView: HomeView     }

这是我的主视图界面:

代码语言:javascript
复制
interface HomeView {
fun OnSuccessLoadFeed(
        showPostBean: ArrayList<Data_model>,
        lastPage: String,
        currentPage: String
)
fun onSuccessNoContent(msg: String)
fun onSuccessLocation(userBean: Data_model)
fun onSuccessLikePost(likePostBean: Data_model)
}

这是接口的store对象的模块类:-

代码语言:javascript
复制
@Module
@InstallIn(SingletonComponent::class)
abstract class InterfaceModule {

@ExperimentalPagingApi
@Binds
abstract fun getHomeView(fragHome: Frag_home): HomeView

@ExperimentalPagingApi
@Binds
abstract fun getDetailPostview(detailPost: Detail_post): DetailPostview

}

dagger-hilt的所有设置都已完成,并且还在应用程序类中提供了@HiltAndroidApp注释

EN

回答 1

Stack Overflow用户

发布于 2021-09-09 07:18:41

这里有几个问题:

首先:你不能现场注入一些东西到你的视图模型中。只允许构造函数注入。为此,您必须对视图模型进行以下修改:

代码语言:javascript
复制
@HiltViewModel
class HomeFeedViewModel(
      @ApplicatonContext private val applicationContext: Context, 
      private val repo: repository
) : ViewModel()

第二:你的HomeView不能被注入到你的视图模型中,因为它依赖于一个Frag_Home作为它的“基类”。如果你想在视图模型中注入HomeView,你必须改变你的依赖关系:

代码语言:javascript
复制
@Module
@InstallIn(SingletonComponent::class)
object Module {

@ExperimentalPagingApi
@Binds
// here you need some Implementation of HomeView to provide it to your singleton graph
fun getHomeView(homeViewImpl: HomeViewImpl): HomeView

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

https://stackoverflow.com/questions/69069453

复制
相关文章

相似问题

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