使用OnClickListener接口如何通过XML和Java代码不同?
2022-08-31 13:56:36
我是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?您是否通过以这种或那种方式进行权衡?