2

我刚开始学习android编程,我对getResources()方法产生了疑问。我注意到,当我创建一个 Resources 对象时,我所要做的就是:
Resources res = getResources();
第一个疑问是以下为什么我必须这样做并且我不能使用 java 关键字new?我不应该这样做吗:
Resources res = new Resources();
第二个疑问如下:在我的文件顶部,我已经导入了 Resources 类。
import android.content.res.Resources;
现在我阅读了 android api,它说 getResources() 是一个公共抽象方法,如果它是抽象的,哪个类实现它?如果它没有被声明为静态,我怎么能简单地调用它输入 getResources() ?

4

2 回答 2

3

您的活动扩展类android.app.Activity进而扩展类android.content.Context(类层次结构的三个级别)。类Context声明了抽象方法getResources()这意味着您的活动子类继承了该方法,您可以从您的onCreate()方法中调用它(例如)。

该方法getResources()在类中声明为抽象,Context但类层次结构中的中间类之一(android.view.ContextThemeWrapper)提供了该方法的实现。

这也意味着创建Resources对象不是您的责任;它是由框架完成的。

于 2013-06-04T16:39:20.513 回答
1

getResources 实际上是一种可以从 Context 访问的方法。所以你真的可以把它想象成:

context.getResources()

在这种情况下,您的 Activity 类是您的上下文,这就是您可以使用以下语法调用它的原因:

getResources()

http://developer.android.com/reference/android/content/Context.html#getResources%28%29

从那些文档中:

与有关应用程序环境的全局信息的接口。这是一个抽象类,其实现由Android系统提供。它允许访问特定于应用程序的资源和类,以及向上调用应用程序级操作,例如启动活动、广播和接收意图等。

于 2013-06-04T16:26:04.437 回答