android Navigation在目的地之间传递参数出现的编译错误Unresolved reference: R

38 阅读1分钟

之前一直在使用Navigation组件在开发,共享数据是使用ViewModel。现在需要一个简单的字段来做判断,所以想使用传递参数的方法来实现,之前没有使用过,打算学习一波。

首先找到官网进行学习

在目的地之间传递数据

按照文中的操作,已经将参数定义好了,继续往下。

使用 Safe Args 传递安全的数据

既然官网强烈建议使用 Safe Args,那么我们就根据文中描述的操作引入:

在顶层build.gradle中:

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.5.3"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

在模块的build.gradle中:

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

编译

出现编译错误: Unresolved reference: R

解决办法

这是因为在对应模块下build.gradleandroid{}块下,使用了namespace,从而在模块下的AndroidManifest中少了package

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.package.name"/>

只要加上了包名,编译就可以通过了。

参考

Unresolved reference: R in Android with Navigation-args