【问题标题】:Safe args: cannot resolve symbol 'string'安全参数:无法解析符号“字符串”
【发布时间】:2018-07-09 17:40:09
【问题描述】:

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

我想在导航图中的一个片段中添加一些参数。参数代码是通过设计编辑器生成的。这是一个sn-p:

<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.

【问题讨论】:

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


    【解决方案1】:

    您的代码看起来不错,请确保向其添加 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
    }
    

    【讨论】:

    • 是的,我确实根据添加组件文档进行了设置。这对你有用吗?你能使用安全的参数吗?另外,您是否能够设置您自己通过app:type 定义的类型?
    • 是的,我在几天前关注了这个tutorial,它成功了。另外,如果您想从 0 开始,请参阅此 Video Tutorial
    • 没关系,我已经有了一个可用的导航图。我只是想利用安全参数将它们联系在一起。我怀疑这与资源墨水有关。
    • @SabaImran 没有得到你
    【解决方案2】:

    一定要放

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

    在您的项目级别 build.gradle

    然后放

    apply plugin: 'androidx.navigation.safeargs'
    

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

    ..................

    android:defaultValue 是可选的

    【讨论】:

      【解决方案3】:

      根据文档,我替换了

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

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

      这对我有用。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2020-05-01
          • 1970-01-01
          • 2014-06-20
          • 2013-12-07
          • 1970-01-01
          • 1970-01-01
          • 2018-11-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多