使用Hilt实现底部导航时点击Favorite应用崩溃问题求助
解决方案
1. 统一Dagger-Hilt依赖版本
你当前的hilt-android版本(2.46.1)和hilt-compiler版本(2.44)不匹配,这会导致编译生成的Hilt组件代码不一致,直接引发该错误。修改依赖为统一版本:
// Dagger-Hilt api("com.google.dagger:hilt-android:2.46.1") kapt("com.google.dagger:hilt-compiler:2.46.1")
2. 确保Application类添加@HiltAndroidApp注解
Hilt需要在Application级别初始化全局组件,缺失这个注解会导致Activity的@AndroidEntryPoint无法生成对应的组件实现类。创建或修改你的Application类:
@HiltAndroidApp class EFashionApplication : Application()
同时在AndroidManifest.xml中指定该Application:
<application android:name=".EFashionApplication" <!-- 其他原有配置 --> > </application>
3. 修正Compose中ViewModel的获取方式
在Activity的setContent中直接批量获取ViewModel并传递给BottomNavigationBar,容易出现生命周期上下文不匹配的问题。建议在各个导航目的地的Composable中单独获取对应ViewModel:
比如在Favorite页面的Composable中:
@Composable fun FavoriteScreen( viewModel: FavoriteViewModel = hiltViewModel() ) { // 页面业务逻辑 }
这样Hilt会自动关联导航组件的生命周期,避免注入异常。
4. 清理并重建项目
由于KAPT生成的代码可能存在缓存问题,执行以下操作:
- 点击Android Studio菜单栏的
Build > Clean Project - 接着点击
Build > Rebuild Project
完成以上步骤后重新运行应用,点击Favorite图标即可正常工作。
内容的提问来源于stack exchange,提问作者sajjadio
相关产品推荐
相关产品推荐

