我们通常按以下方式在按钮上(在GWT或Swing或Android中)编写一个单击处理程序(方式1).
class A {
public void myMethod() {
int count = 0 ;
Button myButton = new Button("x");
myButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
count = 1 ;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我们也可以为click处理程序编写一个不同的类,并按照以下方式实现它(方式2):
class A implements ButtonClickInterface {
int count ;
public void myMethod() {
count = 0 ;
Button myButton = new Button("x");
myButton.addClickHandler(new MyClickHander(this));
}
@Override
public void buttonClicked() {
count = 1 ;
}
}
interface ButtonClickInterface {
public void buttonClicked() ;
}
class MyClickHandler implements ClickHandler {
ButtonClickInterface buttonClickInterface ;
public MyClickHandler(ButtonClickInterface buttonClickInterface) {
this.buttonClickInterface = buttonClickInterface ;
}
@Override
public void onClick(ClickEvent event) {
buttonClickInterface.buttonClicked() ;
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我必须count
作为一个类变量.这有什么缺点吗?上述实现方式还有其他任何缺点吗?在复杂性,耦合,创建的对象数量和代码可读性方面,我实现ClickHandler的两种方式如何相互对立?
您还可以在xml中定义clickHandler.
把它放在你的Activity类中:
public void myClickEvent(View view) {
//Do something
}
Run Code Online (Sandbox Code Playgroud)
并将其放在您的布局.xml中:
<Button
android:id="@+id/myId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
android:onClick="myClickEvent"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2105 次 |
最近记录: |