String.valueOf vs getString

时间:2014-05-18 23:09:27

标签: android

getString和String.valueOf之间有什么区别?

在我的情况下,我已宣布&#34; bgDefault&#34;在strings.xml中: <string name="bgDefault">#0C090A</string>

我可以使用Log.d("xyz", R.color.bgDefault);打印出来的值这也有效:getString(R.color.bgDefault),但为什么String.valueOf(R.color.bgDefault)也不起作用?

1 个答案:

答案 0 :(得分:5)

部分编译过程是生成R.java文件。这包含一堆用于查找资源值的static final int个。它们被组织起来以反映它们将找到什么类型的资源,但就Java而言,它们只是整数。

getString(int)及其子类(如Context)中的Activity方法专门用于查找应用中包含的字符串资源,并且需要字符串资源ID作为知道要查找哪个资源的参数。同样,在Java中,此参数似乎只是一个普通的整数。

String.valueOf(int)完全不同。它是一个Java库函数,它接受一个整数并产生该整数的String表示,例如String.valueOf(5)返回"5"。它对获取Android字符串资源没有用。

顺便说一句,您不需要使用字符串资源来定义这样的颜色。您可以改为定义颜色资源。

<resources>
    <color name="bgDefault">#0C090A</color>
</resources>

要在Java中获得正确的颜色int,您需要这样做:

int bgColor = getResources().getColor(R.color.bgDefault);

getResources()是Context及其子类(如Activity)定义的方法,因此您可以在Activity中使用它。