繁体   English   中英

为什么要编译此方法?

[英]Why does this method compile?

为什么要编译此方法?

    private int test(){
      return R.string.test;
    }

R.string.test是在我的android strings.xml文件中以这种方式定义的:

<resources>

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

</resources>

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

定义资源时,Android代码生成器将读取resources文件并生成具有所有resources id的Java文件R.java ,这就是代码正确编译的原因。

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

要获取字符串,您应该编写context.getResources().getString(R.string.teste)

尝试这个 :

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

在Android中,位于res文件夹中的所有资源都在一个名为R.java的类中进行编译,在那里,您具有创建的资源的标识符。 例如,在R.java类的内部,有一个名为string的子类(用于Strings),一个id用于ids)等等。 在您的示例中,您将具有:

public final class R {

    // Other stuff   

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

    // Other stuff

}

所以当你做的时候return R.string.test; 您正在返回该资源的ID,在我的示例中为0x7f05001c

如果要检索的是字符串本身而不是ID,则需要执行@Suvitruf告诉您的操作: context.getResources().getString(R.string.test)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM