我刚刚开始学习android编程,我对getResources()方法产生了怀疑。
我注意到当我创建一个Resources对象时,我所要做的就是:
Resources res = getResources();
第一个疑问是以下为什么我必须这样做,我不能使用java关键字 new ?我不应该这样做:
Resources res = new Resources();
第二个疑问如下:在我的文件顶部,我导入了Resources类。
import android.content.res.Resources;
现在我读了android api,它说getResources()是一个公共抽象方法,如果它是抽象的哪个类实现它?如果没有声明为静态,我怎么能简单地称它为输入getResources()?
答案 0 :(得分:3)
您的活动扩展了类android.app.Activity,后者又扩展了类android.content.Context(类层次结构中的三个级别)。类Context
声明抽象方法getResources(),这意味着您的活动子类继承了该方法,您可以在onCreate()
方法中调用它(例如)。
方法getResources()
在类Context
中声明为抽象,但类层次结构中的一个中间类(android.view.ContextThemeWrapper)提供了该方法的实现。
这也意味着创建Resources
对象不是您的责任;它由框架完成。
答案 1 :(得分:1)
getResources实际上是一种可以从Context访问的方法。所以你真的可以把它想象成:
context.getResources()
在这种情况下,您的Activity类就是您的上下文,这就是您可以使用以下语法调用它的原因:
getResources()
http://developer.android.com/reference/android/content/Context.html#getResources%28%29
从那些文档:
有关应用程序环境的全局信息的接口。这个 是一个抽象类,其实现由Android提供 系统。它允许访问特定于应用程序的资源和 类,以及应用程序级操作的上调,如 发起活动,广播和接收意图等。