尝试在
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
相关代码如下:
FavoriteViewModel
注释的
@HiltViewModel
类:
@HiltViewModel
class FavoriteViewModel @Inject constructor(
private val getAllFavoritesUseCase: GetAllFavoritesUseCase,
private val addToFavoritesUseCase: AddToFavoritesUseCase,
private val removeFromFavoritesUseCase: RemoveFromFavoritesUseCase
) : ViewModel() {
// ViewModel implementation
}
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
}
}
带有
@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
。
但是,错误仍然存在。 有谁知道可能导致此问题的原因或解决此问题的任何其他步骤?预先感谢您的帮助!
按照下面的方式创建视图模型实例
private val favoriteViewModel: FavoriteViewModel by hiltViewModel()