我正在尝试做这样的事情
public class CytatCore {
public static void cytatCore(int number, TextView tv) {
tv.setText(R.string.text+number);
}
}
我在 xml 中有很多名为“text1”、“text2”等的字符串。只有最后一个值在变化。我尝试以几种方式做到这一点,但我仍然在代码中遇到错误。
我正在尝试做这样的事情
public class CytatCore {
public static void cytatCore(int number, TextView tv) {
tv.setText(R.string.text+number);
}
}
我在 xml 中有很多名为“text1”、“text2”等的字符串。只有最后一个值在变化。我尝试以几种方式做到这一点,但我仍然在代码中遇到错误。
我认为followin代码会为你工作
switch(number) {
case 1 : tv.setText(R.string.text1);
case 2 : tv.setText(R.string.text2);
}
在使用此类型代码时,将 text1、text2 也放入您的 R.string;开关盒也处理得更快。
我对您要完成的工作感到有些困惑,因为您的问题没有写清楚,但是我会在黑暗中尝试一下,并假设您的问题是
如何在 XML 中的字符串末尾附加一个数字?
编辑:我的假设是错误的,看来你的问题是
如何通过名称引用从 XML 中获取字符串?
使用getIdentifier()
a 的方法Context
将按名称查找 ID...但请注意,如果使用非常频繁,则不建议使用此操作,因为它很慢。
public class CytatCore {
public static void cytatCore(Context context, int number, TextView tv) {
int textId = context.getResources().getIdentifier("text" + number, "string", context.getPackageName());
tv.setText(textId);
}
}
另一个选择是获取对Resources
对象的引用并使用方法getIdentifier()
。如果您正在进行一项活动,那么您可以执行以下操作:
public void cytatCore(int number, TextView tv) {
int id = getResources().getIdentifier("text" + 1, "string", this.getPackageName());
t.setText(id);
}
尝试将名称放入数组中:
...
private String[] ids = new String[N];
for (int i = 0; i < N; i++) {
ids[i] = context.getString(R.string.resource_name) + i;
}
进而:
...
public static void cytatCore(int i, TextView tv) {
tv.setText(ids[i]);
}
或者简单地说:
...
public static void cytatCore(int i, TextView tv) {
tv.setText(context.getString(R.string.resource_name) + i);
}