Java 如何从strings.xml中获取字符串值并将其放入arraylist[android]

Java 如何从strings.xml中获取字符串值并将其放入arraylist[android],java,android,xml,reflection,Java,Android,Xml,Reflection,在过去的一个小时里,我一直在努力解决这个问题。 我想从strings.xml和我的代码中获取字符串,这样我就可以动态更改字符串的数量,而无需更改代码中加载到数组列表中的任何内容。到目前为止,我所拥有的只是 for(Field x :R.string.class.getFields()) if(x.getName().startsWith("ans")) choices.add(/*what do I add here to get the string v

在过去的一个小时里,我一直在努力解决这个问题。
我想从
strings.xml
和我的代码中获取字符串,这样我就可以动态更改字符串的数量,而无需更改代码中加载到数组列表中的任何内容。

到目前为止,我所拥有的只是

for(Field x :R.string.class.getFields())
        if(x.getName().startsWith("ans"))
            choices.add(/*what do I add here to get the string value from the field in to the arraylist */);

我一辈子都不知道如何从field对象中获取字符串值。我得到的只是Id(或者至少我认为是Id)或者我在
strings.xml
文件中分配给它的名称。

在res/xml文件夹中创建一个xml文件example.xml

    Resources res = getResources();
    for(Field x :R.string.class.getFields())
        if(x.getName().startsWith("ans")){
                int id = x.get(null);
                choices.add(res.getString(id));
            }
<?xml version="1.0" encoding="utf-8"?>
<data>
    <record name="foo" />
</data>

在res/XML文件夹中创建一个XML文件example.XML

<?xml version="1.0" encoding="utf-8"?>
<data>
    <record name="foo" />
</data>
您可以尝试以下方法:

 choices.add(getResources().getString(R.string.string1));
string1是字符串中的字符串常量。xml

您可以尝试以下方法:

 choices.add(getResources().getString(R.string.string1));

string1是strings.xml中的字符串常量,不够通用。我想从一个循环中添加,而不是从一堆ID为硬编码的add()语句中添加,这会导致维护问题。不够通用。我想从一个循环中添加,而不是从一堆ID为硬编码的add()语句中添加,这会导致维护问题。是的,只需更改x.get(null)并将其转换为整数,然后用try,catch包围,但这是我所渴望的正确解决方案。try{choices.add(res.getString((integer)x.get(null));}//它获取id,然后获取与catch(IllegalArgumentException e){e.printStackTrace();}catch(IllegalAccessException e){e.printStackTrace();}}}}相关的资源。是的,只需更改x.get(null)并将其转换为整数,并用try,catch包围,但这是我渴望的正确解决方案。try{choices.add(res.getString((Integer)x.get(null));}//这将获取id,然后获取与catch(IllegalArgumentException e){e.printStackTrace();}catch(IllegalAccessException e){e.printStackTrace();}相关的资源。这太费劲了。我想使用反射。费洛斯的答案是我需要的正确解决方案。这太费劲了。我想使用反射。费伦的答案是我需要的正确解决方案。