在android中为字符串数组构建资源位置

时间:2016-10-04 19:18:18

标签: android arrays string android-resources

我从我的意图附加组件(KI1,KI2等)

接收字符串数组名称

我希望变量替换它们,而不是硬编码字符串数组名称(如R.array.KI1)。

strdata = receiverIntent.getExtras().getString("intentExtra");
String[] pointDetails =   getResources().getStringArray**(R.array.KI1);**

资源文件

<resources>
    <string-array name="KI1">
        <item>Categories Text KI1</item>
        <item>Unitary Channel Text KI1</item>
        <item>Localization Text KI1</item>
        <item>Action Text KI1</item>
        <item>Indication Text KI1</item>
        <item>Point location Text KI1</item>
        <item>KI1.png</item>
    </string-array>

    <string-array name="KI2">
        <item>Categories Text KI2</item>
        <item>Unitary Channel Text KI2</item>
        <item>Localization Text KI2</item>
        <item>Action Text KI2</item>
        <item>Indication Text KI2</item>
        <item>Point location Text KI2</item>
        <item>KI2.png</item>
    </string-array>
</resources>

为什么不可能做这样的事情:

   String[] pointDetails =   getResources().getStringArray("R.array." +   strdata);

我希望变量的输出如下:R.array.strdata

1 个答案:

答案 0 :(得分:0)

因为getStringArray();接受int值,但是你将字符串传递给它。

为什么不使用switch case或exp ...如

 String[] pointDetails ;

  switch(strdata)
  {
   case "KI1":
      pointDetails  = getResources().getStringArray(R.array.KI1);
   break;
   case "KI2":
      pointDetails  = getResources().getStringArray(R.array.KI2);
   break;
 }