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

Mat*_*att 7 java android undefined

这是这个线程的延续:

在strings.xml中本地化字符串会产生NullPointerException

在经历并实现该线程中提供的解决方案之后出现此问题.提供的解决方案适用于以下情况:

loading = (TextView)findViewById(R.id.loading);
loading.setText(R.string.loading);
Run Code Online (Sandbox Code Playgroud)

这不适用于以下情况:

exodus.add(new Question(R.string.a, R.string.b, R.string.c, R.string.d, 0, R.string.e, -1, R.string.f));
Run Code Online (Sandbox Code Playgroud)

错误是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
Run Code Online (Sandbox Code Playgroud)

以int而不是字符串返回.

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

Rag*_*ood 23

R.string.* 是对R.java中指向实际String的int的引用.

使用context.getResources().getString(R.string.*);以获得实际的字符串值.


Voi*_*icu 5

对于您的最后一个问题:

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


MDM*_*lik 5

请参考这个 StackOverFlow 问题

String mystring = getResources().getString(R.string.mystring);
Run Code Online (Sandbox Code Playgroud)