Android使用Navigation组件时Data Binding无法识别Directions/Args类
修复步骤
- 调整插件应用顺序
打开模块级build.gradle文件,确保androidx.navigation.safeargs.kotlin插件的声明顺序在com.android.application/com.android.library、kotlin-android插件之后,示例配置如下:
plugins { id 'com.android.application' id 'kotlin-android' // safe args插件放在末尾 id 'androidx.navigation.safeargs.kotlin' }- 调整插件应用顺序
- 升级Navigation组件版本
你当前使用的2.3.5版本Navigation存在已知bug,生成的Args类默认使用Kotlin的internal可见性修饰符,Data Binding无法访问internal类型的类。直接将项目中所有Navigation相关依赖、safe args插件版本升级到2.4.0及以上稳定版即可,官方在该版本修复了Data Binding访问生成类的兼容性问题。
- 升级Navigation组件版本
- 若暂不升级版本,可手动配置生成公共类
在模块级build.gradle中添加如下配置,强制safe args生成public修饰的类:
navigation { safeArgs { generatePublic = true } }- 若暂不升级版本,可手动配置生成公共类
- 彻底清理Android Studio缓存
执行菜单栏操作File > Invalidate Caches...,勾选Clear file system cache and local history后重启Android Studio,等待索引完成即可。
- 彻底清理Android Studio缓存
内容的提问来源于stack exchange,提问作者Jaydip Solanki
相关产品推荐
相关产品推荐

