为啥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.Button
和 android.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 通用应用程序具有深色背景