当我需要一个String时,R.string.XXX从strings.xml返回一个int

时间:2013-05-03 17:15:10

标签: java android undefined

这是这个主题的延续:

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的文本而不是对象中的参数?

3 个答案:

答案 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)

请参阅此 StackOverFlow Question

String mystring = getResources().getString(R.string.mystring);