当我尝试从活动中获取字符串时,“getIdentifier”工作正常:
Toast.makeText(this,getResources()。getIdentifier(“frase”,“string”,getPackageName()),Toast.LENGTH_SHORT).show();
但是当从非活动类中尝试它时,它会检索一个数字(例如:2131099793):
getContext()。getResources()。getIdentifier(“frase”,“string”,getContext()。getPackageName();
为什么会这样?
答案 0 :(得分:1)
getIdentifier()
会返回int
,您可以在the JavaDocs中看到。 int
是资源的标识符。在您的情况下,它与int
的{{1}}相同。
在您的第一个代码段中,您将该资源标识符传递给R.string.frase
。 Toast.makeText()
假设如果您传递makeText()
,int
是字符串资源标识符,那么它会查找字符串资源并使用它。
在您的第二个代码段中,您只是使用int
。使用int
将getString()
资源标识符转换为当前配置的相应字符串。