尝试在FavoriteActivity中注入ViewModel时出现带有Hilt的ClassCastException

问题描述 投票:0回答:1

尝试在

ClassCastException
中使用 Hilt 注入
FavoriteViewModel
时遇到
FavoriteActivity
错误。这是完整的错误消息:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chaidar.dicoding.submission1expertandroid/com.chaidar.dicoding.favorite.FavoriteActivity}: java.lang.ClassCastException: com.chaidar.dicoding.submission1expertandroid.DaggerMyApplication_HiltComponents_SingletonC$ActivityCImpl cannot be cast to com.chaidar.dicoding.favorite.FavoriteActivity_GeneratedInjector

相关代码如下:

    带有
  1. FavoriteViewModel

    注释的

    @HiltViewModel
    类:

    @HiltViewModel
    class FavoriteViewModel @Inject constructor(
        private val getAllFavoritesUseCase: GetAllFavoritesUseCase,
        private val addToFavoritesUseCase: AddToFavoritesUseCase,
        private val removeFromFavoritesUseCase: RemoveFromFavoritesUseCase
    ) : ViewModel() {
        // ViewModel implementation
    }
    
  2. FavoriteActivity
    @AndroidEntryPoint
    一起上课:

    @AndroidEntryPoint
    class FavoriteActivity : AppCompatActivity() {
    
        private val favoriteViewModel: FavoriteViewModel by viewModels()
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            // Setup UI code and other initialization
        }
    }
    
  3. 带有

    @HiltAndroidApp
    的应用程序类:

    @HiltAndroidApp
    class MyApplication : Application()
    

我尝试过的:

  • @HiltViewModel
    上添加
    FavoriteViewModel
    注释。

  • @AndroidEntryPoint
    上添加
    FavoriteActivity

  • 确保

    @HiltAndroidApp
    Application
    类中注释。

  • 确保所有使用 Hilt 的模块在

    build.gradle
    中具有以下依赖关系:

    implementation "com.google.dagger:hilt-android:2.x.x"
    kapt "com.google.dagger:hilt-compiler:2.x.x"
    
  • 运行

    Clean Project
    Sync Project with Gradle Files
    Rebuild Project

  • 在 Android Studio 中使用

    Invalidate Caches / Restart

但是,错误仍然存在。 有谁知道可能导致此问题的原因或解决此问题的任何其他步骤?预先感谢您的帮助!

android kotlin dagger-hilt dagger
1个回答
0
投票

按照下面的方式创建视图模型实例

private val favoriteViewModel: FavoriteViewModel by hiltViewModel()
© www.soinside.com 2019 - 2024. All rights reserved.