Resources.getSystem()vs getResources()

时间:2011-12-26 06:40:34

标签: android

我是Android的新手,我自己通过网络上的资源学习SDK。

我现在遇到了一个情况。我正在尝试以下代码:

类型1:getResources().getString(android.R.string.cancel);

类型2: Resources.getSystem().getString(android.R.string.cancel);

类型3: getString(android.R.string.cancel);

以上所有方法都返回相同的值。那么这些方法是什么,它们的用例是什么。什么时候使用哪种方法的好方法。请帮帮我。

3 个答案:

答案 0 :(得分:10)

不同之处不仅在于你得到了什么,而在于你在哪里可以使用它们。

第一个和第三个使用“上下文”。无形。因此,除非将上下文或资源作为静态变量或作为参数传递到范围内,否则通常(在静态成员或活动成员之外)不能直接使用它们。但第二个

Resources.getSystem().getString(android.R.string.cancel)

您可以在应用程序中随处使用,即使在静态常量声明中也是如此!但仅限系统资源

答案 1 :(得分:4)

所有3都返回相同的值,但Resources.getSystem()引用系统资源并可能导致崩溃 if used incorrectly.

建议的用法是“getString(android.R.string.cancel);”

它也在Android开发者网站的WalkieTalkieActivity.java code中使用。

答案 2 :(得分:1)

这三种方法都是一样的。 以下是根方法:getApplicationContext().getResource().getString(""),这是快捷方法:getString("") 在处理应用程序上下文时使用快捷方法。 几乎在所有情况下,我们都使用getString()来获取String文件中定义的字符串。