无法解决android中与属性不兼容的错误

无法解决android中与属性不兼容的错误,android,attrs.xml,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) fla

我有一个下面的错误,我不知道为什么会发生这种情况。我所做的就是添加标志 调用“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
//在ATTR内部

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


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

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


希望有帮助:)

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

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


希望它能有所帮助:)

我相信,您有一个使用此属性的自定义视图,比如MonView。你能提供这个视图的代码吗?它应该是java或kotlin类。
当您在运行时的视图中获取使用属性的属性时,它会尝试将收到的属性值映射到自定义视图类型中的某个预设数组位置或枚举类型。由于您只向xml添加了新属性,但没有更新数组(或枚举,或者只是一些带有开关/大小写的逻辑,不管它是如何实现的),因此会出现此错误。希望这会有所帮助。如果有正确的代码片段,我将能够告诉您更多信息。干杯。

我相信,您有一个使用此属性的自定义视图,比如MonView。你能提供这个视图的代码吗?它应该是java或kotlin类。
当您在运行时的视图中获取使用属性的属性时,它会尝试将收到的属性值映射到自定义视图类型中的某个预设数组位置或枚举类型。由于您只向xml添加了新属性,但没有更新数组(或枚举,或者只是一些带有开关/大小写的逻辑,不管它是如何实现的),因此会出现此错误。希望这会有所帮助。如果有正确的代码片段,我将能够告诉您更多信息。干杯。

您只能使用attr标志中定义的值。在您的代码中,您使用的是
month
,而不是
mon
您只能使用attr标志中定义的值。在您的代码中,您使用的是
month
,而不是
mon
如果它以前工作过,那么这不是问题的根源。当接收到的属性映射到使用这些属性的自定义视图中的某个类型/逻辑时,似乎在运行时失败。如果它以前工作过,那么这不是问题的根源。当接收到的属性映射到使用这些属性的自定义视图中的某个类型/逻辑时,在运行时似乎失败了。