为啥java代码中创建的Android Button()必须使用(this)作为上下文?

Posted

技术标签:

【中文标题】为啥java代码中创建的Android Button()必须使用(this)作为上下文?【英文标题】:Why does an Android Button() created in the java code have to use (this) as the context?为什么java代码中创建的Android Button()必须使用(this)作为上下文? 【发布时间】:2014-11-09 14:37:29 【问题描述】:

我可以使用Button button = new Button();(来自java.awt 导入)在Eclipse 中创建一个按钮。但是在 android Studio 中,如果我使用 Button button = new Button()(来自 android.widget 导入)创建一个 java 代码按钮,我会收到一条错误消息,说“无法解析构造函数 Button()”而不使用 (this) 上下文?

这仅仅是因为 Button() 方法在 java.awt 库和 android.widget 库中的定义方式不同吗?

【问题讨论】:

请显示一些代码:在这种情况下,包括工作代码和非工作代码。 java.awt.Buttonandroid.widget.Button 是完全不同的东西。您不应尝试使用 AWT 组件或将 J2SE 标准库链接到 Android 应用程序。 @Kevin 谢谢。这就是我在第二段中所暗示的。我通过检查文档确认了这一点。 java.awt.Button 读作public Button()...android.widget.Button 读作“公共按钮(上下文上下文)”。由于这直接回答了我的问题,因此如果您想将其作为答案提交,我可以将其标记为答案。 【参考方案1】:

看看doc,没有不带参数的构造函数。您必须至少提供一个Context

【讨论】:

当您说“没有不带参数的构造函数”时,您是指Android吗?因为在我原来的帖子中,我引用了 java.awt.Button 如何不需要参数或上下文。 @dbconfession :仅仅因为它们具有相同的名称并不意味着这些类是相同的。如果遇到问题,您必须始终参考要使用的课程的文档。看看我给你的链接。 @dbconfession :好的,所以我当然指的是android.widget.Button【参考方案2】:

按钮需要一个 Android Activity 作为其上下文,以便它知道存在于何处。 “this”指的是创建按钮的活动。如果您有多个活动正在运行,那么将其他活动之一作为上下文传递也是有效的。

【讨论】:

上下文参数的概念是Android独有的对吗?我相信我读到上下文是仅用于 android java 编码的新内容。 我不确定它是否是Android独有的,但Android是我见过的唯一地方。

以上是关于为啥java代码中创建的Android Button()必须使用(this)作为上下文?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在eclipse中创建的jsp项目,没有Java Resources这个文件夹

在 PHP 中,为啥可以在同一类类型的方法中创建的新实例上调用私有方法? [复制]

为啥你不能命名一个在函数中创建的对象,与它在 Python 中的类名完全相同?

为啥在 VS 2015 中创建的默认 windows 8 通用应用程序具有深色背景

在 scala 中创建的图像看起来不像预期的那样。不知道为啥

在 Windows 资源管理器中看不到在 android 中创建的文件 [重复]