@EntryPoint MainActivity 也必须用@Installin 注解

@EntryPoint MainActivity must also be annotated with @Installin

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

这是我的代码:

申请Class

@HiltAndroidApp
class MyApp : Application() {
}

模块class

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

    @Singleton
    @Provides
    fun providesString(): String {
        return "Something"
    }
}

主要活动Class

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

你应该 @AndroidEntryPoint 这里 activity。 @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")
    }
}