如何在扩展Activity而不是AppCompatActivity的类中注入改装实例?这是模块:
@InstallIn(SingletonComponent::class)
object Module {
private const val BASE_URL = "API_URL_HERE"
@Singleton
@Provides
fun provideRetrofitApi(): Api {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(Api::class.java)
}
}
这是我的主要活动:
@AndroidEntryPoint
class MainActivity : Activity() {
...
@Inject
lateinit var api: Api
...
这导致
用@AndroidEntryPoint注释的活动必须是 androidx.activity.ComponentActivity 的子类。(例如 FragmentActivity、AppCompatActivity 等)[剑柄]处理未完成。有关详细信息,请参阅上面的错误。
我尝试使用@ActivityScoped而不是@Android Entry Point,但它会导致
科特林。UninitializedPropertyAccessException:lateinit 属性 api 尚未初始化。
为什么不扩展ComponentActivity?这是刀柄的已知要求。
但是,如果您真的做不到,请使用@EntryPoint注释创建一个入口点。
https://developer.android.com/training/dependency-injection/hilt-android#not-supported
val hiltEntryPoint =
EntryPointAccessors.fromApplication(appContext, ExampleContentProviderEntryPoint::class.java)
val analyticsService = hiltEntryPoint.analyticsService()
从你的创建活动中调用它,
您忘记使用@Moules
注释装饰您的模块。
@Module
@InstallIn(SingletonComponent::class)
object Module {
private const val BASE_URL = "API_URL_HERE"
@Singleton
@Provides
fun provideRetrofitApi(): Api {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(Api::class.java)
}
}
我只是开始尝试在我非常简单的项目上使用Hilt。现在它都是在Dagger2上,但我想迁移到Hilt。 我有一个活动: 和下面这样的基本活动: 或者(就像我用匕首那样): 另外,我只是一个初学者,所以,也许我错过了什么。我将继续搜索:) 感谢您的时间和回答:) java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“Android.content.pm.Appli
我正在用注入一个依赖于ViewModel中的的类,该模块安装在中,作用域为activity,每当我尝试编译时,它都会向我抛出一个错误。供您参考,我还有其他模块,其中ActivityRetainedComponent和SingletonComponent注入了@ApplicationContext。 现在我想弄清楚这个错误是什么意思。 代码在这里(我不认为这里有什么问题) 编辑2:我得出的结论是不可
这是我的束缚 错误在于 /Users/X/AndroidStudioProjects/Corotuines/app/build/generated/source/kapt/debug/com/example/corotuines/application/ApplicationMain_HiltComponents.java:126:错误:[Dagger/Mis的绑定]com.example.cor
这是我的存储库管理器 和例外情况:
我只是从喷气背包和剑柄开始。但是当我注入到ViewModel中时,我遇到了一些问题。 我得到的错误: 我可以在活动中注入所有细节,但不能在ViewModel中注入。我已经尝试了所有我能找到的解决办法。 我的gradle文件: 项目根级别: 模块级: 我的申请文件 我的模块文件: 项目是具有可组合屏幕的单个活动,因此主要活动: 视图模型: 我尝试过的事情: 改为ViewModelComponent而
我对匕首比较陌生,我刚开始使用剑柄。我想要的是在中注入一个应用程序范围的存储库(这意味着它需要在任何地方都是相同的对象)。存储库将用于检索用户、auth令牌和诸如此类的东西。这是我能找到的最接近的: 这样一切都可以正常工作,使用debug我可以确认每次使用时都注入了相同的实例。问题是第二次调用时(例如,视图被销毁并重新创建)。我不知道我是在科特林一侧犯了什么愚蠢的错误,还是在剑柄一侧犯了什么愚蠢的