可能是重复问题:
OnClick()事件和OnClickListener的区别?
我在Android开发方面算是新手,一开始我试图尽可能地避免使用xml布局,因此我的一些早期项目包括创建显式的OnClickListener并将其实现为匿名内部类的按钮。例如 -
final Button button = new Button(this);
button.setText("Click to change second line of text");
OnClickListener buttonListener = new View.OnClickListener() {
boolean clicked = false;
int numClicks = 0;
@Override
public void onClick(View v) {
if(numClicks > 5) {
button.setText("STOP IT");
}
numClicks++;
if(clicked == false){
clicked = true;
tv2.setText("Text Changed on Button Click");
}
else
{
clicked = false;
tv2.setText("Click again");
}
}
};
button.setOnClickListener(buttonListener);
随着我对Android的熟悉,我开始理解XML布局的价值,并且像这样实现了按钮。
<Button
android:id="@+id/button1"
android:layout_height = "wrap_content"
android:layout_width ="wrap_content"
android:text = "lets do this"
android:onClick = "DoIt"
/>
在布局XML中,DoIt是在Java文件中定义的。我的问题是,这两种方法是否在功能上是相同的?是否有OnClickListener被编译器在幕后进行了定义?使用其中一种方法会有任何特性上的权衡吗?