0

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

JFrame frame = new Frame();

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

LinearLayout ll = new LinearLayout(this);
4

2 回答 2

2

上下文类详细信息:

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

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

编辑部分:

thiscontextandroid中的超集

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

new Frame() , new LinearLayout(this)除参数外具有相同的表示形式this,现在尽量避免new代码中的关键字,现在我们只有 Frame() , LinearLayout(this).

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

需要注意的一点:在每个构造函数或每个方法中,都有一个自动为方法或构造函数创建的堆栈。堆栈被创建为临时存储(范围依赖),并且在每个堆栈的 first_position 中,这些都是this调用函数。所以无论你是否为 android 发送这个都没有关系,我认为聪明的头脑(android Api 的创建者)已经添加它(context)以获得更好的 user_readability,用户可以正确理解它。

于 2013-06-09T15:06:25.147 回答
1

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

于 2013-06-09T16:33:24.437 回答