如何以编程方式访问Android R.raw类

时间:2013-10-21 00:44:16

标签: java android r.java-file

我正在尝试使用这一小段代码读取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。[无论以名字传递什么]?

1 个答案:

答案 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
}

希望这会有所帮助:)