无法解决与Android中的属性错误不兼容的问题

时间:2018-11-01 06:57:20

标签: android attrs.xml

我有以下错误,我不知道为什么会发生。我所做的只是添加标志 称为“ mon”,并尝试将其添加到xml的自定义视图中。除“ mon”以外的其他标志 好。此错误是什么意思?我希望收到您的来信。

Android resource linking failed
Output:  samp/app/src/main/res/layout/layout_mon.xml:2: error: 'mon' is incompatible with attribute mon_type (attr) flags [sol=1, dan=4, tin=2] [weak].
error: failed linking file resources.

Command: /Users/me/.gradle/caches/transforms-1/files-1.1/aapt2-3.2.1-4818971-osx.jar/0c6f710daca8a09e3/aapt2-3.2.1-4818971-osx/aapt2 link -I\
        /Users/me/Library/Android/sdk/platforms/android-26/android.jar\
        --manifest\
      /Users/me/Documents/samp/app/build/intermediates/instant_run_merged_manifests/_stagingDebug/process_stagingDebugManifest/instant-run/AndroidManifest.xml\
        -o\
        /Users/me/Documents/samp/app/build/intermediates/processed_res/_stagingDebug/process_stagingDebugResources/out/resources-_stagingDebug.ap_\
        -R\
        @/Users/me/Documents/samp/app/build/intermediates/incremental/process_stagingDebugResources/resources-list-for-resources-_stagingDebug.ap_.txt\
        --auto-add-overlay\
        --java\
        /Users/me/Documents/samp/app/build/generated/not_namespaced_r_class_sources/_stagingDebug/process_stagingDebugResources/r\
        --custom-package\
        jp.aeonretail.aeon.kidsrepublic\
        -0\
        apk\
        --preferred-density\
        xxhdpi\
        --output-text-symbols\
        /Users/me/Documents/samp/app/build/intermediates/symbols/_st/debug/R.txt\
        --no-version-vectors
Daemon:  AAPT2 aapt2-3.2.1-4818971-osx Daemon #0

//在attrs内部

<declare-styleable name="MonView">
    <attr name="mon_type">
        <flag name="sol" value="0x01"/>
        <flag name="dan" value="0x02"/>
        <flag name="tin" value="0x04"/>
        <flag name="mon" value="0x06"/>
    </attr>
</declare-styleable>

//视图

<?xml version="1.0" encoding="utf-8"?>
<example.MonView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/mon_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:mon_type="mon"
</example.MonView>

2 个答案:

答案 0 :(得分:1)

您声明了属性名称,但未指定输入类型 将您的attrs更改为

<declare-styleable name="MonView">
<attr name="mon_type" format="flags">
    <flag name="sol" value="0x01"/>
    <flag name="dan" value="0x02"/>
    <flag name="tin" value="0x04"/>
    <flag name="mon" value="0x06"/>
</attr></declare-styleable>

希望它会有所帮助:)

答案 1 :(得分:0)

我相信,您拥有使用此属性的某种自定义视图,例如MonView。您能否同时提供此视图的代码?它应该是java或kotlin类。 看来,当您在使用它们的视图中的运行时上获取属性时,它将尝试将接收到的属性值映射到自定义视图类型内的某个预设数组位置或枚举类型。由于您仅将新属性添加到xml,但未更新数组(或枚举,或者只是带有开关/大小写的某些逻辑,但是已实现),因此您会收到此错误。希望这会有所帮助。如果有正确的代码段,我将告诉您更多。干杯。