我正在使用导航体系结构组件,并且想利用安全的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.
答案 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
内的路径也不会改变。