Android setOnclicklistener 参数

2024-02-20

我是android的初学者,在为按钮设置onclick监听器时,传递的参数是什么意思:

 btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });    

所以,“new OnClickListener()”它被传递给一个方法,那么它不应该是一个对象吗?
如果它不是一个对象;那么我们如何使用“new”关键字呢?
为什么直接调用“onclick()”而不使用“this”关键字或其类名。


单击监听器 http://developer.android.com/reference/android/view/View.OnClickListener.html is an 界面 http://docs.oracle.com/javase/tutorial/java/concepts/interface.html并通过使用new OnClickListener()作为参数btn1.setOnClickListener它实际上是在创建一个匿名内部类 http://mindprod.com/jgloss/anonymousclasses.html它实现了单击监听器。以及方法onClick必须需要声明,因为它是该接口类内的抽象方法。当按下按钮时,您在 onClick 中编写的任何代码都将被执行。


Update

在对象中使用匿名内部类来做到这一点:

//declaring OnClickListener as an object
private OnClickListener btnClick = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
};

//passing listener object to button
btn1.setOnClickListener(btnClick);

不使用匿名类来做到这一点:

public class YourActivity extends Activity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       Button b = new Button(this);

       //setting listener to button
       b.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
}

这些方法之间的唯一区别是,如果您的按钮包含单击事件代码,该代码应该仅对该按钮有效/可用,那么您可以像在代码中一样使用内部类(因为它很容易立即执行) 。但是,如果有多个按钮需要在 onClick 事件上执行相同的代码,那么您可以将侦听器定义为对象并将其传递给它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android setOnclicklistener 参数 的相关文章

随机推荐

  • 无法启动 net 6 + React 应用程序的 SPA 代理

    我正在创建一个基于 ASP NET CORE Web 应用程序 React 模板的新项目 然后我根据需要配置 ClientApp 我使用自己的 webpack config js 而不是 CRA 前端工作正常 当我运行它时它按预期启动npm
  • jQuery 启用/禁用显示/隐藏按钮和选择选项。获取剩余选项值

    我有一个使用文本字段中的值填充的选择列表 我还有两个按钮 一个添加按钮 用于将输入的值添加到选择列表中 一个删除按钮 用于从选择列表中删除输入的值 我想使用 jQuery 执行以下操作 如果在文本字段中输入的值为无法使用在选择列表中 显示添
  • PHP Curl 异步响应

    我有一个 PHP 文件 它通过curl 调用另一个PHP 文件 我试图让第二个文件向第一个文件发送响应 让它知道它已启动 问题是第一个不能等待第一个完成执行 因为这可能需要一分钟或更长时间 我需要它立即发送响应 然后继续处理常规业务 我尝试
  • Wordpress,为所有链接添加 标签

    当我在 WordPress 网站上撰写博客文章时 我想在所有锚标记内动态添加一个 span 标记 其数据属性与锚标记具有相同的值 Example 我在 WordPress 中写的内容 p Some text with a href a li
  • 在 TriggerDagRunOperator 中提供上下文

    我有一个 dag 它被另一个 dag 触发 我已经通过这个 dag 传递了一些配置变量DagRunOrder payload字典以同样的方式官方示例 https github com apache incubator airflow blo
  • 寻找最常见的组合

    我有一个包含 2 列 ID 号和品牌的数据框 X1 X2 1234 A89 1234 A87 1234 A87 1234 A32 1234 A27 1234 A27 1235 A12 1235 A14 1235 A14 1236 A32 1
  • swift2 中协议扩展的限制和默认值

    所以我在研究协议扩展时遇到了一个 有趣 的问题 我想写一个Meters and Kilometers用于测试某些东西的单元类型 作为一个类 它非常容易做到这一点 其中有一个基类 并且两个子类都覆盖基类 而只是覆盖一个简单的值 Convers
  • 使用 js.dart 公开 auth0 API

    我正在编写一个 Dart Angular2 应用程序 但它与当前的问题无关 我试图通过使用 1https pub dartlang org packages js 公开它的 API 来将 Auth0Lock 与 dart 一起使用 我正在使
  • 如何在 Mac OSX 上的 Qt 中使用 pkcs12/pfx 成功执行 SSL 加密?

    Qt 新手和开发跨平台应用程序 需要来自服务器和客户端的 SSL 身份验证基于 pem 的加密适用于 Linux Android Windows 然而 Mac OSX 存在问题 我们的代码如下所示 QFile privateKeyFile
  • UIButton:需要一个圆形点击区域

    好的 我有 6 个自定义 UIButton 他们的正常状态图像都是圆形图像 它们的间距相等 但所有圆圈都相互接触 自定义 UIbutton 其上有圆形图像 的问题在于该按钮的点击区域是方形的 并且该方形的角与其他自定义按钮的点击区域重叠 我
  • 使用 Rails 助手渲染部分内容

    根据我的理解 助手主要用于清理视图中某些特定于视图的逻辑 但是在我当前的新项目 遗留应用程序 中 我偶然发现了很多看起来像这样的助手 def itemprepare render partial gt items itemlist summ
  • Django 管理内联的国家/州/城市下拉菜单

    我有一个 BusinessBranch 模型的城市外键 我的城市模型还具有州和县模型的州和国家外键 我很难在 BusinessBranchInline 中显示州和国家 地区下拉菜单 实现这一目标的最佳方法是什么 如果下拉列表根据其父级的值来
  • 使用“mm”说明符格式化月份的 DateTime ToString 问题

    我在获取正确的格式时遇到问题 我期待 2013 10 但我得到的是 2013 00 为什么会这样 我该如何解决这个问题 DateTime dt DateTime Parse 2013 Oct 01 string str2 dt ToStri
  • 如何在 C# 中执行结构体内联初始化?

    我应该在我的任意结构中实现什么成员才能使以下分配成为可能 public struct MyStruct String s Int length MyStruct myStruct new MyStruct s Hello length 5
  • 如何在 ASP.NET Core 中返回 401 而不是 302?

    我试图让 ASP NET Core Identity 在用户未登录时返回 401 我添加了一个 Authorize 属性到我的方法 而不是返回 401 而是返回 302 我尝试了很多建议 但似乎没有任何效果 包括services Confi
  • 从 JComboBox 渲染器获取工具提示

    我有一个扩展 JPanel 的 ComboBox 渲染器并有两个标签 在这里 我需要在鼠标移至时显示工具提示图标标签仅有的 如果鼠标在标签项不应显示工具提示 import java awt Color import java awt Com
  • asyncio matplotlib show() 仍然冻结程序

    我希望运行模拟当在同时在绘图中输出其进度 我一直在研究很多线程和多重处理的示例 但它们都非常复杂 所以我想用Python的新asyncio图书馆这应该更容易 我找到了一个例子 如何在异步函数中使用 yield https stackover
  • 如何根据书籍的条形码编号查找有关书籍的数据? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在构建世界上最简单的图书馆应用程序 我想要做的就是使用典型的扫描仪 只需将条形码的数字输入到字段中
  • Python 请求:POST 请求删除授权标头

    我正在尝试使用 Python requests 库发出 API POST 请求 我正在经过一个Authorizationheader 但是当我尝试调试时 我可以看到 header 被删除 我不知道发生了什么事 这是我的代码 access t
  • Android setOnclicklistener 参数

    我是android的初学者 在为按钮设置onclick监听器时 传递的参数是什么意思 btn1 setOnClickListener new OnClickListener Override public void onClick View