我刚开始学习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/