XML 中的 Android onClick 与 OnClickListener [英] Android onClick in XML vs. OnClickListener

查看:31
本文介绍了XML 中的 Android onClick 与 OnClickListener的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我意识到之前有人问过一个类似措辞的问题,但这次有所不同.我在开发 android 应用程序方面很新,我对 android:onclick="" XML 属性和 setOnClickListener 方法之间的区别有三个问题.>

I realize that a similarly-worded question has been asked before, but this is different. I am pretty new at developing android apps and I have three questions regarding the difference(s) between the android:onclick="" XML attribute and the setOnClickListener method.

  1. 两者有什么区别?两种实现之间的区别是在编译时还是运行时或两者中发现的?

  1. What are the differences between the two? Is the difference between the two implementations found at compile time or run time or both?

哪些用例有利于哪种实现?

What use cases are favorable to which implementation?

Android 中片段的使用对实现选择有何不同?

What difference(s) does the use of fragments in Android make in implementation choice?

推荐答案

OnClickListener 与 OnClick 的区别:

  • OnClickListener 是你需要实现的接口,可以设置到 java 代码中的视图.
  • OnClickListener 是等待某人的东西实际点击, onclick 决定当有人时会发生什么点击.
  • 最近 android 向视图添加了一个 xml 属性,名为 android:onclick,可用于直接在视图的活动中处理点击无需实现任何接口.
  • 如果需要,您可以轻松地将一个侦听器实现替换为另一个实现.
  • OnClickListener 使您能够将点击事件的动作/行为与触发事件的视图分开.虽然对于简单的情况这不是什么大问题,但对于复杂的事件处理,这可能意味着代码的可读性和可维护性更好
  • 由于 OnClickListener 是一个接口,实现它的类可以灵活地确定处理事件所需的实例变量和方法.同样,这在简单的情况下不是什么大问题,但对于复杂的情况,我们不希望将与事件处理相关的变量/方法与触发事件的视图的代码混在一起.
  • XML 布局中带有函数绑定的 onClick 是 onClick 与其将调用的函数之间的绑定.该函数必须有一个参数(视图)才能使 onClick 起作用.

两者功能相同,只是一个通过java代码设置,另一个通过xml代码设置.

Both function the same way, just that one gets set through java code and the other through xml code.

setOnClickListener 代码实现:

Button btn = (Button) findViewById(R.id.mybutton);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    myFancyMethod(v);
    }
});

// some more code

public void myFancyMethod(View v) {
    // does something very interesting
}

XML 实现:

<?xml version="1.0" encoding="utf-8"?>
<!-- layout elements -->
<Button android:id="@+id/mybutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click me!"
    android:onClick="myFancyMethod" />
<!-- even more layout elements -->

性能:

两者的性能相同.xml在编译时被预先解析成二进制代码.所以在 Xml 中没有开销.

Both are the same in performance. Xml is pre-parsed into binary code while compiling. so there is no over-head in Xml.

限制:

android:onClick 适用于 API 级别 4 以上,因此如果您的目标是 <1.6,那你就不能用了.

android:onClick is for API level 4 onwards, so if you're targeting < 1.6, then you can't use it.

这篇关于XML 中的 Android onClick 与 OnClickListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆