getString和String.valueOf之间有什么区别?
在我的情况下,我已宣布" bgDefault"在strings.xml中:
<string name="bgDefault">#0C090A</string>
我可以使用Log.d("xyz", R.color.bgDefault);
打印出来的值这也有效:getString(R.color.bgDefault)
,但为什么String.valueOf(R.color.bgDefault)
也不起作用?
答案 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中使用它。