安全参数:无法解析符号“字符串”

时间:2018-07-09 17:40:10

标签: android android-architecture-components type-safety android-navigation

我正在使用导航体系结构组件,并且想利用安全的args插件。

我想向导航图中的片段之一添加一些参数。参数代码是通过“设计”编辑器生成的。这是一个片段:

<fragment
    android:id="@+id/inAppPurchaseFragment"
    android:name="purchaseFragment" >
    <argument
        android:name="attribution_id"
        app:type="string" />
</fragment>

但是,我在Android Studio(3.2 Canary 16)中遇到错误,提示它无法解析符号“字符串”或我尝试使用的任何类型。你们中有人遇到过这个问题吗,您知道为什么会发生吗?

更新以获取更多上下文;在具有app:type="string"的行上进行构建时出现此错误:

error: 'string' is incompatible with attribute type (attr) integer.

4 个答案:

答案 0 :(得分:0)

您的代码看起来不错,请确保为其添加了defaultValue

android:defaultValue="something"

顺便说一句,您是否实现了adding-components documentation上所说的Navigation Architecture Components

dependencies {
    def nav_version = "1.0.0-alpha02"

    implementation "android.arch.navigation:navigation-fragment:$nav_version" // use -ktx for Kotlin
    implementation "android.arch.navigation:navigation-ui:$nav_version" // use -ktx for Kotlin

    // optional - Test helpers
    androidTestImplementation "android.arch.navigation:navigation-testing:$nav_version" // use -ktx for Kotlin
}

答案 1 :(得分:0)

请务必放上

classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha02"

在您的项目级别build.gradle

放入

apply plugin: 'androidx.navigation.safeargs'

在您的应用程序级别build.gradle中。

........

android:defaultValue是可选的

答案 2 :(得分:0)

根据文档,我替换了

<argument
        ...
        app:type="string"
        .../>

<argument
        ...
        app:argType="string"
        .../>

那对我有用。

答案 3 :(得分:0)

就我而言,我已将一个用作 Argument 的类从一个包移动到另一个包。为了解决这个问题,我为 app:argType 中的类重写了正确的路径。

发生此问题的原因是,即使您在将类从一个包移动到另一个包时单击“Refractor”,app:argType 内的路径也不会改变。