gpt4 book ai didi

XML 中的 Android onClick 与 OnClickListener

转载 作者:IT老高 更新时间:2023-10-28 13:11:43 26 4
gpt4 key购买 nike

我知道之前有人问过类似措辞的问题,但这次不同。我在开发 android 应用程序方面还很陌生,关于 android:onclick="" 之间的区别我有三个问题。 XML 属性和 setOnClickListener方法。

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

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

  3. 在 Android 中使用 Fragment 对实现选择有何不同?

最佳答案

OnClickListener 与 OnClick 的区别:

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

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

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 中没有开销。

限制:

android:onClick 适用于 API 级别 4 及以上,因此如果您的目标是 <1.6,则无法使用它。

关于XML 中的 Android onClick 与 OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21319996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com