文件夹为空时无法解析原始符号

时间:2018-09-12 04:25:57

标签: android android-resources

当我尝试使用以下代码Field[]fields=R.raw.class.getFields();

访问文件夹时,为什么会给我“无法解析符号原始文件”的提示?

当我将任何文件添加到原始文件夹时,相同的代码也有效。该文件夹位于“ res”目录中。

注意:我也尝试使用完整的软件包名称。

2 个答案:

答案 0 :(得分:1)

创建Android resource folderlayoutdrawablemipmap时,Android会创建一个名为R.java的文件。您可以在

中找到它

app\build\generated\source\r\degug\your\app\package\name\R.java

这基本上是一个普通的Java文件,由android自动生成,用于通过代码中的id引用资源。

R.java

public final class R {
    public static final class layout{
        public static final int main_activity=0x7f0a0000;
        public static final int login_activity=0x7f0a0001;
    }
    public static final class drawable{
        public static final int ic_add=0x7f0a0000;
        public static final int ic_edit=0x7f0a0001;
    }
    public static final class mimap{
        public static final int ic_launcher=0x7f0b0000;
    }
}

在Android官方网站上:

  

资源是代码中的其他文件和静态内容   用途,例如位图,布局定义,用户界面字符串,   动画说明等。

这意味着res文件夹为read-only,并且您无法修改(添加,更新,删除)内容侧。

回到您的问题,当您创建raw文件夹但不放入任何文件并且android知道在运行时您也无法修改此文件夹时,为什么我们需要创建一个指向{ {1}}的资源了。它没有任何意义。由于raw中没有raw类,因此您的编译器将显示错误。

R.java

但是,如果您创建文件并将其放入cannot resolve symbol raw 文件夹中,则在构建过程之后,将在raw文件中创建类raw

R.java

现在错误消失了。

答案 1 :(得分:0)

我认为问题是您使用了错误的 R 软件包。 确保R应该来自您的包名称,而不是其他一些android Native类。