18

这是该线程的延续:

在 strings.xml 中本地化字符串会产生 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 的构造函数应该是Question(String, String, String, String, int, String, int, String)这些:

R.string.X

以整数而不是字符串形式返回。

我能做些什么来解决这个问题?而且,如果您知道,为什么这种方法适用于设置TextViews 的文本而不是对象中的参数?

4

3 回答 3

44

R.string.*是对 R.java 中指向您的实际字符串的 int 的引用。

用于context.getResources().getString(R.string.*);获取实际的字符串值。

于 2013-05-03T17:16:34.873 回答
6

请参考这个 StackOverFlow 问题

String mystring = getResources().getString(R.string.mystring);
于 2013-05-03T17:19:23.080 回答
4

对于你的最后一个问题:

您正在使用setText方法原型,它接受一个 resid 参数,而不是 a String,这就是它起作用的原因。R.string.loading返回一个int表示该残基的值。如果您setText使用参数调用该方法getString(R.string.loading),那么它将使用setText原型。

于 2013-05-03T17:18:21.743 回答