这是这个主题的延续:
Localizing strings in strings.xml gives NullPointerException
在执行该线程中提供的解决方案之后出现此问题。提供的解决方案适用于以下情况:
loading = (TextView)findViewById(R.id.loading);
loading.setText(R.string.loading);
这不适用于以下情况:
exodus.add(new Question(R.string.a, R.string.b, R.string.c, R.string.d, 0, R.string.e, -1, R.string.f));
错误为The constructor Question(int, int, int, int, int, int, int, int) is undefined
。问题的构造函数应该是Question(String, String, String, String, int, String, int, String)
但是这些:
R.string.X
以ints而不是Strings返回。
我该怎么做才能解决这个问题?而且,如果你知道,为什么这个方法适用于设置TextView
的文本而不是对象中的参数?
答案 0 :(得分:21)
R.string.*
是对R.java中指向实际String的int的引用。
使用context.getResources().getString(R.string.*);
获取实际的字符串值。
答案 1 :(得分:3)
关于你的上一个问题:
您正在使用setText方法原型,该原型采用渣油参数,而不是String
,这就是它工作的原因。 R.string.loading
返回代表该残差的int
。如果您使用setText
参数调用getString(R.string.loading)
方法,那么它将使用setText原型。
答案 2 :(得分:3)
String mystring = getResources().getString(R.string.mystring);