Android Navigation Components Error: 'bad operand types for binary operator' in generated file
Android Navigation Components Error: 'bad operand types for binary operator' in generated file
我正在开发一个包含 Android 导航组件的应用程序。生成的构建文件 MyFragmentDirections.java
阻止了应用程序的构建,该文件包含许多类似于以下错误的错误:
error: bad operand types for binary operator '=='
if (mainItemId == null) {
^
first type: int
second type: <null>
...
error: int cannot be dereferenced
if (getMainItemId() != null ? !getMainItemId().equals(that.getMainItemId()) : that.getMainItemId() != null) {
我怀疑问题出在我定义的导航参数中:
<argument
android:name="mainItemId"
app:argType="int"/>
我使用 int
而不是 Int
因为我在 Android 上看到的示例开发人员使用 string
而不是 String
.
当我引用导航参数时,更改为 Int
会导致我的代码中其他地方出现一组不同的错误:
Type mismatch: inferred type is Int but kotlin.Int was expected
Cannot access class 'Int'. Check your module classpath for missing or conflicting dependencies
任何人都可以解释为什么会发生这种情况并提供解决方案吗?
我的 Gradle 构建文件(模块)的相关部分如下:
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-android-extensions'
id 'androidx.navigation.safeargs.kotlin' // edited see comments
}
...
dependencies {
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1'
implementation 'androidx.navigation:navigation-ui-ktx:2.4.1'
}
根据 the documentation,整数的 只有 正确 argType
是 app:argType="integer"
- 这将使 int
在 Java 代码或 kotlin.Int
Kotlin 代码中。
我正在开发一个包含 Android 导航组件的应用程序。生成的构建文件 MyFragmentDirections.java
阻止了应用程序的构建,该文件包含许多类似于以下错误的错误:
error: bad operand types for binary operator '=='
if (mainItemId == null) {
^
first type: int
second type: <null>
...
error: int cannot be dereferenced
if (getMainItemId() != null ? !getMainItemId().equals(that.getMainItemId()) : that.getMainItemId() != null) {
我怀疑问题出在我定义的导航参数中:
<argument
android:name="mainItemId"
app:argType="int"/>
我使用 int
而不是 Int
因为我在 Android 上看到的示例开发人员使用 string
而不是 String
.
当我引用导航参数时,更改为 Int
会导致我的代码中其他地方出现一组不同的错误:
Type mismatch: inferred type is Int but kotlin.Int was expected
Cannot access class 'Int'. Check your module classpath for missing or conflicting dependencies
任何人都可以解释为什么会发生这种情况并提供解决方案吗?
我的 Gradle 构建文件(模块)的相关部分如下:
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-android-extensions'
id 'androidx.navigation.safeargs.kotlin' // edited see comments
}
...
dependencies {
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1'
implementation 'androidx.navigation:navigation-ui-ktx:2.4.1'
}
根据 the documentation,整数的 只有 正确 argType
是 app:argType="integer"
- 这将使 int
在 Java 代码或 kotlin.Int
Kotlin 代码中。