Android Studio中生成的FragmentDirections文件出现R未解析引用错误
问题:导航组件生成的Directions文件出现「Unresolved reference: R」错误
在Android项目中使用Fragment时,只要在导航XML里添加第二个Fragment并建立它和第一个Fragment的连接,就会触发编译错误——自动生成的RubrikFragmentDirections.kt文件出现「Unresolved reference: R」的未解析引用问题。删掉导航XML里的连接后,应用就能正常启动。
错误信息
e: path\ui\RubrikFragmentDirections.kt: (3, 8): Unresolved reference: R
自动生成的错误代码
import R import androidx.navigation.ActionOnlyNavDirections import androidx.navigation.NavDirections public class RubrikFragmentDirections private constructor() { public companion object { public fun actionRubrikFragmentToOverviewFragment(): NavDirections = ActionOnlyNavDirections(R.id.action_rubrikFragment_to_overviewFragment) } }
解决方案
- 检查导航XML的命名空间:确保
<navigation>根元素的xmlns:android="http://schemas.android.com/apk/res/android"和xmlns:app="http://schemas.android.com/apk/res-auto"属性正确配置,且android:id使用标准格式(如@+id/nav_main) - 修正导入语句:临时将生成文件中的
import R替换为你应用的包名导入(比如import com.your.app.package.R),但注意构建时可能被覆盖,需配合其他方案从根源解决 - 清理重建项目:执行
Build > Clean Project后再执行Build > Rebuild Project,强制重新生成导航组件代码 - 统一导航组件版本:确保
build.gradle中navigation-fragment-ktx、navigation-ui-ktx等相关依赖的版本完全一致,优先使用最新稳定版 - 验证ID定义:检查导航XML中Fragment的
android:id、Action的android:id是否无拼写错误、无重复定义
内容的提问来源于stack exchange,提问作者OHA
相关产品推荐
相关产品推荐

