2

好的,我想使用一种布局并使用 strings.xml 以编程方式更改我的字符串。

我有 40 个问题,总是有 4 个答案(它们是静态的)。

所以我的想法是这样的:

while i < 40:
 set question to question[i]
 on answer click: i++

如何动态获取字符串。我一直用getResources().getText(R.string.example).

我可以做类似的事情:

String dynamic = "R.string.example" + i;
getResources().getText(dynamic)
4

2 回答 2

2

也许您可以将答案和问题保存在 strings.xml(或其他地方)的数组中,或者如果您愿意,可以保存更多数组。因此,您可以像现在使用 getResources() 一样加载数组,但使用getStringArray 如果您有一个数组,您可以动态地获取正确的答案/问题或任何您想用它做的事情。

在 strings.xml(或另一个 xml)中:

<string-array name="months_array">
    <item>Jan</item>
    <item>Feb</item>
    <item>Mar</item>
    <item>Apr</item>
    <item>May</item>
    <item>Jun</item>
    <item>Jul</item>
    <item>Aug</item>
    <item>Sep</item>
    <item>Oct</item>
    <item>Nov</item>
    <item>Dec</item>
</string-array>

在您的代码中:

String[] months = getResources().getStringArray(R.string.months_array);

这是你想要的吗?

于 2012-12-16T13:34:03.403 回答
1

好的,我想使用一种布局并使用 strings.xml 以编程方式更改我的字符串。

如果您根本不需要任何动画,这就是要走的路。

我可以做类似的事情:

字符串动态 = "R.string.example" + i;

getResources().getText(动态)

使用Resources.getIdentifier()方法:

int textId = getResources().getIdentifier("example" + i, "string", getPackageName());
getResources().getText(textId);

但是,ndsmyter如前所述,您可能希望将所有问题和答案放在 5 个不同的数组中(1 个用于问题文本,4 个用于 4 个答案)。然后,您将在启动时仅加载此数组一次,然后简单地使用 一次性i从 5 个数组中获取所有数据。

于 2012-12-16T13:42:10.013 回答