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
在我的androidstrings.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。