【问题标题】:Building a resource location for a string array in android [duplicate]在android中为字符串数组构建资源位置[重复]
【发布时间】:2016-10-04 19:18:18
【问题描述】:

我从 Intent Extras(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

【问题讨论】:

    标签: android arrays string android-resources


    【解决方案1】:

    因为 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;
     }
    

    【讨论】:

    • 如果有KI400的话,我就得写400个case了,但是如果我能知道怎么用变量替换的话,那就是2行代码了。
    • 要实现你想要的,你需要通过名称而不是id来获取资源。这是怎么回事:Resources res = getResources(); int id = res.getIdentifier(strdata, "array", getContext().getPackageName()); String[] pointDetails = res.getStringArray(id);
    • 感谢@Giorgos,您的解决方案有效:)
    猜你喜欢
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多