Resources.getSystem()vs getResources()

Kan*_*amy 16 android

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

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

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

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

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

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

Gan*_*nus 10

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

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

Resources.getSystem().getString(android.R.string.cancel)
Run Code Online (Sandbox Code Playgroud)

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

  • 它有一个缺点.`Resources.getSystem()`只提供对系统资源的访问(没有应用程序资源),并且没有为当前屏幕配置(不能使用维度单位,不会根据方向更改等). (5认同)

小智 5

所有 3 个都返回相同的值,但 Resources.getSystem() 引用系统资源, 如果使用不正确可能会导致崩溃。

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

Android 开发者网站上的WalkieTalkieActivity.java 代码中也同样使用了它。


mih*_*o39 1

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