1

私は過去1時間、これを理解しようとしてきました。配列リストにロードするコードを変更することなく、文字列の量を動的に変更できるように、
一般的にコードとの間で文字列を取得したいと考えています。これまでのところ、私が持っているのは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 */);

フィールドオブジェクトから文字列値を取得する方法を一生理解できません。私が取得しているのは、ID [または少なくとも ID と思われるもの] またはstrings.xmlファイル内で割り当てた名前のいずれかです。

4

3 に答える 3

4
    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));
            }
于 2012-11-06T05:47:38.900 に答える
1

res/xml フォルダーに XML ファイル example.xml を作成します。

<?xml version="1.0" encoding="utf-8"?>
<data>
    <record name="foo" />
</data>

次に、以下に示すように解析します

XmlResourceParser xrp = context.getResources().getXml(R.xml.example);
try {
  int eventType = xrp.next();
  while (eventType != XmlPullParser.END_DOCUMENT) {
    if (eventType == XmlPullParser.START_TAG && xrp.getName().equalsIgnoreCase("record")) {

      String name = xrp.getAttributeValue(null, "name");

      //choices.add(name);
    }

    eventType = xrp.next();
  }
} catch (XmlPullParserException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}
于 2012-11-06T05:57:12.680 に答える
0

これを試すことができます:

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

string1 は、strings.xml の文字列定数です。

于 2012-11-06T05:57:43.513 に答える