java - 为什么小部件的构造需要上下文?

标签 java android

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

JFrame frame = new Frame();

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

LinearLayout ll = new LinearLayout(this);

最佳答案

上下文类详细信息:

有关应用程序环境的全局信息的接口(interface)。这是一个抽象类,其实现由Android系统提供。 它允许访问特定于应用程序的资源和类,以及对应用程序级操作的向上调用,例如启动 Activity 、广播和接收 Intent 等。

想象一下您的应用程序没有这个它允许访问特定于应用程序的资源。 现在如何在 LinearLayout -> Child (ImageView) 中添加图像为此,您需要一些引用,通过它您可以访问在项目的可绘制文件夹中声明的图像。

编辑部分:

this 是 android 中 context 的超集

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

new Frame() 、 new LinearLayout(this) 具有相同的表示形式,除了 this 参数,现在尝试避免使用 new 关键字代码,现在我们只有 Frame()、LinearLayout(this) .

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

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

关于java - 为什么小部件的构造需要上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973527/

相关文章:

android - Realm OrderedRealmCollectionChangeListener 不起作用

java - Android/Java,如何在某些字段中处理带有换行符和逗号的csv文件?

java - 打开其他布局时,应用已停止

java - 在heroku上部署spring boot时Google api重定向问题

java - 为什么我的 equals 方法在这个类中不起作用?它无法正常运行

java - 哪些异常会杀死 Java 中的 Web 应用程序

android - $ 和 Android JNI 命名之后是什么?

java - 2 个 POJO 类扩展了一个基类,其中每个类都映射到唯一的表。为什么 hibernate 查询在“字段列表错误”中创建​​未知列 ''?

java - 避免使用instanceof模式

android - 使用哪个Android控件?