gpt4 book ai didi

android - 如果没有 @inject 构造函数或 @Provides - 带注释的方法,则无法提供 Hilt java.lang.Integer

转载 作者:行者123 更新时间:2023-12-05 00:19:02 25 4
gpt4 key购买 nike

您好,我正在使用 hilt 依赖注入(inject)器构建应用程序,但是当我尝试构建应用程序时,标题出现错误。这是我的代码:
流量类:

@Entity(tableName = "flows_table")
data class Flow @Inject constructor(@PrimaryKey(autoGenerate = true) val id:Int, val name:String, val duration:Int, val actions:ArrayList<Action>)
Action 类:
data class Action @Inject constructor(
val type: String,
val color: String?,
val brightness: Int?,
val duration: Float
)
我的应用程序:
@HiltAndroidApp
class YeebumApplication : Application() {
//get bulbs repository
private val bulbsDatabase by lazy { BulbsDatabase.getInstance(this)}
val bulbsRepository by lazy { BulbsRepository(bulbsDatabase!!.bulbsDao()) }

//get flows repository
private val flowsDatabase by lazy { FlowsDatabase.getInstance(this) }
val flowsRepository by lazy { FlowsRepository(flowsDatabase!!.flowsDao())}
}
我的 fragment :
@AndroidEntryPoint
class ActionDetailsFragment : Fragment() {


@Inject
lateinit var flow: Flow
有了这个 Activity ,一切都运行良好,但是当我尝试在 fragment android studio 中注入(inject)依赖项时会抛出该异常。

最佳答案

当 Hilt 注释处理器遇到 @Inject fragment 中的注释,它将尝试(从 Hilt @Module@Provides 注释方法)找到 Flow 的实例.
我从错误消息中假设您尚未创建它,因此 Hilt 将移至下一个选项并尝试创建 Flow 的实例本身。
所以 Hilt 查看 Flow 的第一个属性, id类型 Int .就像注入(inject) Flow在您的 fragment 中,它会重复该过程。它查找 Int 的实例从刀柄 @Module@Provides注释方法。这不存在。下一个选项,尝试自己构建它。嗯Int是一个平台类型,你没有访问权限,所以你还没有创建 Int带有 @Inject 的类带注释的构造函数。
Hilt 现在没有选项,并抛出此 Exception :

Hilt java.lang.Integer cannot be provided without @inject constructor or @Provides - annotated method

关于android - 如果没有 @inject 构造函数或 @Provides - 带注释的方法,则无法提供 Hilt java.lang.Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64916656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com