可能的重复:
OnClick() 事件和 OnClickListener 之间的区别? https://stackoverflow.com/questions/7453299/difference-between-onclick-event-and-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.io.xml 中定义的。
我的问题是,这两种方法在功能上是一样的吗?编译器是否在幕后某处定义了 OnClickListener?您是否通过使用一种或另一种方式来权衡任何功能?
这些是完全相同的。android:onClick
在 API 级别 4 中添加,使其更容易、更像 Javascript Web,并通过 XML 驱动一切。它的内部作用是添加一个OnClickListener
在按钮上,它会调用您的DoIt
method.
这是使用android:onClick="DoIt"
内部执行:
Button button= (Button) findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DoIt(v);
}
});
您唯一要权衡的就是使用android:onClick
与 XML 配置一样,添加动态内容变得有点困难(通过编程,您可以根据变量决定添加一个或另一个侦听器)。但这很容易通过在DoIt
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)