Hilt Activity必须附加到@AndroidEntryPoint应用程序

时间:2020-09-22 08:43:10

标签: kotlin mvvm dagger-hilt

该应用一安装即崩溃,并引发上面的奇怪错误。 我已经注释了如下所示的活动及其子片段。

@AndroidEntryPoint
    class HomeActivity : AppCompatActivity() {
        companion object{
           lateinit var currentUser: User
        }
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
    
            setContentView(R.layout.activity_home)
            val navController = Navigation.findNavController(this, R.id.home_nav)
            val bottomNavigationView: BottomNavigationView = findViewById(R.id.bottom_navigation)
            bottomNavigationView.setupWithNavController(navController)
            fetchCurrentUser()
        }

还附加了Application类,该类是根据文档使用Hilt的每个应用程序所必需的

@HiltAndroidApp
class CoreApplication:Application()

和崩溃的日志

Caused by: java.lang.IllegalStateException: Hilt Activity must be attached to an @AndroidEntryPoint Application. Found: class androidx.multidex.MultiDexApplication
        at dagger.hilt.android.internal.managers.ActivityComponentManager.createComponent(ActivityComponentManager.java:82)
        at dagger.hilt.android.internal.managers.ActivityComponentManager.generatedComponent(ActivityComponentManager.java:65)
        at com.example.vcare.home.Hilt_HomeActivity.generatedComponent(Hilt_HomeActivity.java:43)
        at com.example.vcare.home.Hilt_HomeActivity.inject(Hilt_HomeActivity.java:62)
        at com.example.vcare.home.Hilt_HomeActivity.onCreate(Hilt_HomeActivity.java:37)
        at com.example.vcare.home.HomeActivity.onCreate(HomeActivity.kt:27)
        at android.app.Activity.performCreate(Activity.java:7224)
        at android.app.Activity.performCreate(Activity.java:7213)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)

3 个答案:

答案 0 :(得分:4)

解决此问题的方法是:以XML声明android:name = .CoreApplication

答案 1 :(得分:1)

对我来说,解决方案略有不同:在我的主模块中,我只需要应用程序类的 Hilt,所以我只添加了 hilt-android 依赖项:

implementation 'com.google.dagger:hilt-android:2.33-beta'

导致上述错误消息。

我忘记了还要将编译依赖项添加到应用程序模块中:

kapt 'com.google.dagger:hilt-compiler:2.33-beta'

这解决了问题,因为我缺少生成的类。

答案 2 :(得分:-1)

您是否在清单中声明了 Application 类?

添加

<申请 android:name=".CoreApplication" .... />