使用android时出现"无法解析符号"错误:id ="@ + android:id/my_id"

Eth*_*ler 15 android lint android-studio

当我将android:id/background添加到命名空间时,Lint抱怨它"无法解析符号",即使我请求添加它而不是调用它.代码按写入方式工作,但错误仍然存​​在.当我更改时<item android:id="@+android:id/background" to <item android:id="@+id/background",应用程序停止工作(另一个呼叫中断).我的问题是:为什么Lint不认识我将android:id/background添加到命名空间,即使对它的调用运行良好?有没有更好的方法来为这个项目提供一个不会让Lint抛出错误的id?

以下图层列表中项目的所有三个命名空间定义都会引发一个lint错误:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+android:id/background"
        android:drawable="@drawable/custom_ratingbar_empty" />
    <item android:id="@+android:id/secondaryProgress"
        android:drawable="@drawable/custom_ratingbar_empty" />
    <item android:id="@+android:id/progress"
        android:drawable="@drawable/custom_ratingbar_filled" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

我找到了这个并尝试运行build-> clean,但没有成功.

Sha*_*arj 30

如果您要创建自己的ID:

"@+id/your_new_id"
Run Code Online (Sandbox Code Playgroud)

如果您正在访问已创建的ID

"@id/your_old_id"
Run Code Online (Sandbox Code Playgroud)

如果您正在尝试访问Android的系统创建的ID

"@android:id/system_id"
Run Code Online (Sandbox Code Playgroud)

你可以看到差异,如果你正在创建自己的id,那么你必须添加+.由于您正在访问系统ID,因此您无需添加+


tat*_*igo 6

看来您正在使用额外的内容+

你应该将其删除,替换如下@+android:id/background@android:id/background