Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么要编译这个方法?_Java_Android_Syntax - Fatal编程技术网

Java 为什么要编译这个方法?

Java 为什么要编译这个方法?,java,android,syntax,Java,Android,Syntax,为什么要编译这个方法 private int test(){ return R.string.test; } R.string.test在我的androidstrings.xml文件中是这样定义的: <resources> <string name="test">Test</string> </resources> 测验 我所知道的关于逻辑、宇宙和生命本身的一切现在都毫无意义。请帮助一个困惑的灵

为什么要编译这个方法

    private int test(){
      return R.string.test;
    }
R.string.test
在我的android
strings.xml
文件中是这样定义的:

<resources>

     <string name="test">Test</string>  

</resources>

测验

我所知道的关于逻辑、宇宙和生命本身的一切现在都毫无意义。请帮助一个困惑的灵魂。

R.string.teste
以整数形式获取字符串的id。所以我没有看到任何问题


要获取字符串,您应该编写
context.getResources().getString(R.string.teste)
当您定义资源时,android code generator读取
资源
文件并生成一个包含所有
资源id
的java文件,这就是代码编译正确的原因。

尝试以下操作:

private String test(){
    String mess = getResources().getString(R.string.test);
    return mess;
}

在Android中,
res
文件夹中的所有资源都编译在一个名为
R.java
的类中,在该类中,您有一个创建的资源的标识符。例如,在
R.java
类中,有一个子类称为
string
,用于字符串,
id
用于id,依此类推。在您的示例中,您将有:

public final class R {

    // Other stuff   

    public static final class string {
        public static final int test=0x7f05001c;
        // More String resources
    }

    // Other stuff

}
因此,当您执行
时,返回R.string.test返回该资源的id,在我的示例中
0x7f05001c


如果你想要的是检索字符串本身,而不是它的id,那么你需要按照@Suvitruf告诉你的做:
context.getResources().getString(R.string.test)

你的肯定是一条评论当然了,现在是凌晨,我还没有喝咖啡。真不敢相信我花了这么长时间才想到这个。@用户253296按住windows键,然后单击
测试
硬猜,你没有导入R。或者你的导入错误清理了你的项目,那么下次肯定不会编译它。这可能是您第一次创建测试字符串并在R.java中生成测试id时发生的。当您清理项目时,它会再次生成新的id。