Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式访问资源名称_Java_Android - Fatal编程技术网

Java 以编程方式访问资源名称

Java 以编程方式访问资源名称,java,android,Java,Android,我的资源文件中有许多字符串数组,我希望根据用户输入以编程方式访问它们 int c = Getter.getCurrentNumber(); String[] info = getResources().getStringArray(R.array.n_<c>); int c=Getter.getCurrentNumber(); String[]info=getResources().getStringArray(R.array.n); 因此,如果c==12,info应该是名为“n

我的资源文件中有许多字符串数组,我希望根据用户输入以编程方式访问它们

int c = Getter.getCurrentNumber();
String[] info = getResources().getStringArray(R.array.n_<c>);
int c=Getter.getCurrentNumber();
String[]info=getResources().getStringArray(R.array.n);
因此,如果c==12,info应该是名为“n_12”的字符串数组。 有没有办法做到这一点,避免在数百个案例中使用switch语句


谢谢

您可以这样获得资源id

int c = Getter.getCurrentNumber();
String resource = "n_" + c;
int id = getResources().getIdentifier(resource, "array", "com.your.project");
那就用那个id吧

String[] info = getResources().getStringArray(id);

查看
getResources().getIdentifier()

上的另一个示例,如果您希望按名称(以编程方式)获取资源,但不确定如何按名称寻址资源(但您知道如何通过R访问),可以执行以下操作:

  • 首先打印准确的资源名称,如下所示:
Log.d(“,context.getResources().getResourceName(R.id.whichYouAlreadyKnow))

(注意:R.id.whichoualreadyknow可以是R.string.*R.drawable.*等…)
现在您知道了确切的资源地址名称

  • 取打印的名称并按原样使用,如下所示:
int id=getResources().getIdentifier(上面打印的资源名称,null,null)


干杯

我已经更新了答案。现在有用吗?