我尝试做这样的事情
public class CytatCore {
public static void cytatCore(int number, TextView tv) {
tv.setText(R.string.text+number);
}
}
我在xml中有很多名为eg" text1"," text2"只有最后一个值正在改变。我试图以几种方式做到这一点,但我仍然在代码中出错。
答案 0 :(得分:3)
我认为以下代码适合您
switch(number) {
case 1 : tv.setText(R.string.text1);
case 2 : tv.setText(R.string.text2);
}
使用此类型代码时,也将text1,text2放在R.string中;开关盒也处理得更快。
答案 1 :(得分:2)
我对你要完成的事情感到有点困惑,因为你的问题写得不清楚,但我会在黑暗中捅一下并假设你的问题是
如何将数字附加到XML格式的字符串末尾?
编辑:我的假设是错误的,看来你的问题是
如何通过名称引用从XML获取字符串?
使用getIdentifier()
的{{1}}方法将按名称查找ID ...但是如果它经常使用,则会被警告不建议使用此操作,因为它很慢。
Context
答案 2 :(得分:1)
您拥有的另一个选择是获取Resources
对象的引用并使用方法getIdentifier()
。如果您参加活动,那么您可以这样做:
public void cytatCore(int number, TextView tv) {
int id = getResources().getIdentifier("text" + 1, "string", this.getPackageName());
t.setText(id);
}
答案 3 :(得分:0)
尝试将名称放在数组中:
...
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);
}