我正在尝试使用这一小段代码读取res / raw目录中的文本文件:
public String fetchParam(String name, int index){
InputStream is = getResources().openRawResource(R.raw.name);
InputStreamReader isreader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isreader);
...
}
问题在于“R.raw.name”,其中name不被解释为变量,而是被称为“name”的R.raw类的成员。那么我该如何获得R.raw。[无论以名字传递什么]?
答案 0 :(得分:2)
首先,我想我应该说,如果你试图访问这样的资源,你可能会以错误的方式解决这个问题。通常不应以这种方式使用R类。
但是,如果你真的需要做你想做的事情,你可以使用反射。注意:建议不要这样做,因为它会占用大量开销,如果经常使用,会降低应用程序的速度。
以下是代码示例:
try
{
int itemId = R.raw.class.getField(name).getInt(null);
InputStream is = getResources().openRawResource(itemId);
InputStreamReader isreader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isreader);
}
catch (NoSuchFieldException ex)
{
// Handle
}
catch (IllegalAccessException ex)
{
// Handle
}
希望这会有所帮助:)