我刚刚开始学习Android编程,我有一个疑问。如果我有一个Activity和(在它里面)一个小部件,为什么我必须在小部件的构造函数中声明一个上下文?它不应该理解我自己的上下文吗?在Java中,如果我创建一个框架,我只需要输入:
JFrame frame = new Frame();
我不明白为什么我需要在Android中写这个:
LinearLayout ll = new LinearLayout(this);
答案 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()
)。