我刚开始学习 Android 编程,我有一个疑问。如果我有一个 Activity 和(在其中)一个小部件,为什么我必须在小部件的构造函数中声明一个上下文?它不应该自己理解我所处的环境吗?在 Java 中,如果我创建一个框架,我只需要输入:
JFrame frame = new Frame();
我不明白为什么我需要在 Android 中写这个:
LinearLayout ll = new LinearLayout(this);
上下文类详细信息:
与有关应用程序环境的全局信息的接口。这是一个抽象类,其实现由Android系统提供。It allows access to application-specific resources and classes
,以及对应用程序级操作的向上调用,例如启动活动、广播和接收意图等。
认为您的应用程序没有这个It allows access to application-specific resources
。现在,您将如何在 LinearLayout-> Child (ImageView)中添加图像,为此您需要一些参考,通过它您可以访问在项目的可绘制文件夹中声明的图像。
编辑部分:
this
是context
android中的超集
(我不能说这是准确的,但我试图这样理解)
new Frame() , new LinearLayout(this)
除参数外具有相同的表示形式this
,现在尽量避免new
代码中的关键字,现在我们只有
Frame() , LinearLayout(this)
.
所以现在你调用两个构造函数Frame() and LinearLayout(this)
需要注意的一点:在每个构造函数或每个方法中,都有一个自动为方法或构造函数创建的堆栈。堆栈被创建为临时存储(范围依赖),并且在每个堆栈的 first_position 中,这些都是this
调用函数。所以无论你是否为 android 发送这个都没有关系,我认为聪明的头脑(android Api 的创建者)已经添加它(context
)以获得更好的 user_readability,用户可以正确理解它。
Android 中的 AView
需要从 中检索某些属性Resources
,例如尺寸、颜色等。要检索这些,它需要Context
(例如context.getResources()
)。