我是Android新手并试图理解我从教程中编写的代码。与此同时,每当我想要真正理解某些内容时,我都会引用文档。
该页面讨论了字符串资源。
对于字符串,在字符串部分下,它指出我可以检索XML文件中定义的字符串,如下所示:String string = getString(R.string.hello);
。
有问题的XML:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello!</string>
</resources>
现在,对于一个字符串数组,在 String Array 部分下,它声明我可以检索XML文件中定义的字符串字符串数组,如下所示:
Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);
有问题的XML:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
</string-array>
</resources>
为什么我必须为字符串数组Resources res = getResources();
而不是XML文件中的字符串?
String[] planets = getStringArray(R.array.planets_arry);
不起作用吗? resources
有更多方法,即对于像String Arrays这样的更复杂的情况吗?是getString
这么简单,在资源下不需要它是好的吗?我在哪里可以找到一份清单,列出要求我做Resources res = getResources();
与不要求做什么的内容?
最后,getResources
是否可以获取我的Android项目中的每一个资源,而不管它可能位于哪个XML文件中?
答案 0 :(得分:4)
我为什么要做资源res = getResources();对于一个字符串 数组,而不是XML文件中的字符串?
getString()是Context对象的一个方法(主要是一个Activity,但也可以是一个Service)。该方法的代码是:
public final String getString(int resId) {
return getResources().getString(resId);
}
含义getString()只是Context类提供的一种方便方法。最后,两个调用都是相同的,即通过Resource对象检索资源。
String [] planets = getStringArray(R.array.planets_array);不 工作?
否,因为Context没有方便的方法来检索String []。
资源有更多方法,即更复杂的情况 字符串数组?
是。见http://developer.android.com/reference/android/content/res/Resources.html。 如果由你来决定它们是否比getStringArray更复杂,我会离开。
getString如此简单,在资源下不需要它吗?
资源确实有一个getString(int)方法:http://developer.android.com/reference/android/content/res/Resources.html#getString(int)
我在哪里可以找到一个列表,将需要我做资源的内容分开 res = getResources();与什么不需要?
没有这样的清单。 JavaDoc for Context将告诉您使用的方便方法: http://developer.android.com/reference/android/content/Context.html
最后,getResources会让我获得Android中的每一个资源 项目,无论它可能是什么XML文件?
仅当它在资源xml文件中时。布局或Drawables不能包含String资源。
答案 1 :(得分:0)
致电getString()
与getResources().getStringArray()
基本相同,如上所述here方法getString()
只是一种方便的方法,因为它被使用了经常。
public final String getString(int resId) {
return getResources().getString(resId);
}
我还要补充一点,您不能在getStringArray
所在的其他资源文件中使用getString()
,例如XML布局。