@EntryPoint MainActivity 也必须用@Installin 注解

Ton*_*ony 7 kotlin dagger-hilt

我在 Dagger-Hilt 上收到了这个错误,我不知道为什么,我什至降级到一个简单的项目,看看是否能找到我的问题,但显然我做的一切都是正确的。我创建了 Application 类,在清单文件中声明了它,创建了一个提供字符串的模块,当我尝试将其注入到主活动中时出现错误,错误显示“D:\Programacion\Kotlin\TryingHilt\ app\build\tmp\kapt3\stubs\debug\com\y4kuzabanzai\tryinghilt\MainActivity.java:7: 错误: [Hilt] 公共最终类 MainActivity 扩展 androidx.appcompat.app.AppCompatActivity { ^ @EntryPoint com.y4kuzabanzai.tryinghilt .MainActivity 还必须用 @InstallIn [Hilt] 处理未完成进行注释。有关详细信息,请参阅上面的错误。”

这是我的代码:

应用类

@HiltAndroidApp
class MyApp : Application() {
}
Run Code Online (Sandbox Code Playgroud)

模块类

@Module
@InstallIn(ApplicationComponent::class)
class TestModule {

    @Singleton
    @Provides
    fun providesString(): String {
        return "Something"
    }
}
Run Code Online (Sandbox Code Playgroud)

主要活动类

@EntryPoint
class MainActivity : AppCompatActivity() {

    @Inject
    lateinit var injectedString: String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        Log.d("MyTag", "onCreate: $injectedString")
    }
}
Run Code Online (Sandbox Code Playgroud)

0xA*_*iHn 10

你应该@AndroidEntryPoint来这里参加活动。@Entrypoint用于某些不同的目的,但其用途不正确。

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

    @Inject
    lateinit var injectedString: String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        Log.d("MyTag", "onCreate: $injectedString")
    }
}
Run Code Online (Sandbox Code Playgroud)