匕首柄:- kotlin.UninitializedPropertyAccessException: lateinit属



这是我的视图模型类

class HomeFeedViewModel( val applicationContext: Context, val repo: repository) : ViewModel() {
lateinit private var homeView: HomeView     }

这是我的homeview界面:-

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)
}

这是我的模块类的存储对象的接口:-

@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柄的所有设置都完成了,@HiltAndroidApp注释也提供在应用程序类

这里有几个问题:

第一:您不能在视图模型中字段注入某些东西。只允许构造函数注入。为此,您必须按照以下方式修改视图模型:

@HiltViewModel
class HomeFeedViewModel(
@ApplicatonContext private val applicationContext: Context, 
private val repo: repository
) : ViewModel()

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

@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
}

相关内容

  • 没有找到相关文章

最新更新