为什么小部件的构造需要一个Context?

时间:2013-06-06 22:49:22

标签: java android

我刚刚开始学习Android编程,我有一个疑问。如果我有一个Activity和(在它里面)一个小部件,为什么我必须在小部件的构造函数中声明一个上下文?它不应该理解我自己的上下文吗?在Java中,如果我创建一个框架,我只需要输入:

JFrame frame = new Frame();

我不明白为什么我需要在Android中写这个:

LinearLayout ll = new LinearLayout(this);

2 个答案:

答案 0 :(得分:2)

上下文类详细信息:

有关应用程序环境的全局信息的接口。这是一个抽象类,其实现由Android系统提供。 It allows access to application-specific resources and classes,以及应用程序级操作的上调,例如启动活动,广播和接收意图等。

在没有此It allows access to application-specific resources的情况下考虑您的应用程序。 现在如何在LinearLayout中添加图片 - > Child(ImageView)为此您需要一些参考,通过它您可以访问在项目的drawable文件夹中声明的图像。

编辑部分:

this是android

context的超集

(我不能说这是准确的,但我试图像这样理解它)

new Frame() , new LinearLayout(this)参数外,

this具有相同的表示,现在尝试避免代码中的new关键字,现在我们只有 Frame() , LinearLayout(this)

现在你调用两个构造函数Frame() and LinearLayout(this)

要注意的要点:在每个构造函数或每个方法中,都有一个为方法或构造函数自动创建的堆栈。 stack被创建为临时存储 (范围依赖)&在每个堆栈的first_position中,这些是调用函数的this。所以你发送这个与否并不重要 对于Android,我认为聪明的头脑(android Api' s创建者)添加了它(context)以获得更好的user_readability,用户可以正确理解它。

答案 1 :(得分:1)

Android中的View需要从Resources检索某些属性,例如尺寸,颜色等。要检索这些属性,需要Context(例如context.getResources() )。