另一种设置on click侦听器的方法是使用XML。只需添加android:onClick属性到你的标签。
尽可能在匿名Java类上使用xml属性“onClick”是一个很好的实践。
首先,让我们看看代码中的区别:
XML属性/ onClick属性
XML部分
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:onClick="showToast"/>
Java部分
public void showToast(View v) {
//Add some logic
}
匿名Java类/ setOnClickListener
XML部分
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Java部分
findViewById(R.id.button1).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
//Add some logic
}
});
下面是使用XML属性而不是匿名Java类的好处:
With Anonymous Java class we always have to specify an id for our
elements, but with XML attribute id can be omitted.
With Anonymous Java class we have to actively search for the element
inside of the view (findViewById portion), but with the XML attribute
Android does it for us.
Anonymous Java class requires at least 5 lines of code, as we can
see, but with the XML attribute 3 lines of code is sufficient.
With Anonymous Java class we have to name of our method “onClick",
but with the XML attribute we can add any name we want, which will
dramatically help with the readability of our code.
Xml “onClick” attribute has been added by Google during the API level
4 release, which means that it is a bit more modern syntax and modern
syntax is almost always better.
当然,并不总是可以使用Xml属性,以下是我们不选择它的原因:
如果我们使用片段。onClick属性只能添加
一个活动,所以如果我们有一个片段,我们将不得不使用
匿名类。
如果我们想移动onClick侦听器到一个单独的类
(也许如果它非常复杂和/或我们想重新使用它
的不同部分),那么我们就不想使用
XML属性。