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

sak*_*ket 8 mvvm kotlin 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()
        }
Run Code Online (Sandbox Code Playgroud)

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

@HiltAndroidApp
class CoreApplication:Application()
Run Code Online (Sandbox Code Playgroud)

和崩溃的日志

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)
Run Code Online (Sandbox Code Playgroud)

And*_*rew 23

此问题的解决方案是:android:name = ".CoreApplication"在您的AndroidManifest.xml文件中的<application .../>标记中声明。


小智 6

就我而言,我在将存储库实现到 ViewModel 类中时遇到了错误。

我遵循了一些修复来解决这些错误。

  1. 将入口点添加到活动类(AndroidEntryPoint
  2. 添加入口点到应用程序类(HiltAndroidApp
  3. 将名称添加到清单应用程序android:name=".main.BaseApplication"
  4. 将@Inject添加到存储库类

现在 Hilt 与 MVVM 和干净架构的问题已经解决!