gpt4 book ai didi

java - 编写优雅的点击处理程序

转载 作者:太空狗 更新时间:2023-10-29 15:39:10 25 4
gpt4 key购买 nike

我们通常按以下方式(方式 1)在按钮(在 GWT 或 Swing 或 Android 中)上编写点击处理程序。

class A {

public void myMethod() {

int count = 0 ;

Button myButton = new Button("x");
myButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
count = 1 ;
}

});

}
}

但是,我们也可以为点击处理程序编写一个不同的类并像下面这样实现它(方式 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() ;
}

}

在这里,我必须将count 作为类变量。这有什么缺点吗?上述实现方式还有其他缺点吗?我实现 ClickHandler 的两种方式在复杂性、耦合、创建的对象数量和代码可读性方面如何相互对抗?

最佳答案

您还可以在 xml 中定义您的 clickHandler。

将其放入您的 Activity 类中:

public void myClickEvent(View view) {
//Do something
}

并将其放入您的布局 .xml 中:

<Button
android:id="@+id/myId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
android:onClick="myClickEvent"/>

关于java - 编写优雅的点击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com