1

我是 Android 新手,一般都是事件驱动的代码。我没有在我的 Activity 中嵌入大量匿名事件侦听器类来处理 onClick 事件等,而是定义了单独的类来保持代码整洁。然后我像这样使用它们

myButton.setOnClickListener(new MyEventListener());

所以,当“myButton”被点击时,MyEventListener 的 onClick 方法会做一些事情。

我想知道最佳实践

a)从事件监听器访问我的活动中的东西。例如更改标签的文本。onClick 事件需要一个视图,但这是已单击按钮的视图,因此如果标签不是我的按钮的子级,我不能使用 findViewById 来获取它的句柄。我已经修改了构造函数以传递对标签的引用,以便事件有一个句柄,但不确定这是否是最优雅的方式。

b) 传回信息,例如当我的事件触发时,我可能想要禁用一些 EditText 字段。我认为正确的方法可能是从我的事件侦听器中分派另一个事件,Activity 侦听该事件,当它看到该事件时,禁用相关字段。这是在Android中做到这一点的方式吗?

希望有人可以提供帮助,非常感谢。

谢谢

4

1 回答 1

2

使用显式事件侦听器(无论是否匿名)的替代方法是使用 xml 中的onClick属性直接分派到方法,如下例所示:

布局xml文件:

 <Button android:onClick="buttonClickedCallback" />

现在简单地在您的活动上定义一个方法:

class CustomActivity extends Activity {
    public void buttonClickedCallback(View clickedButton) {
        // do stuff
    }
}

如 Android 1.6 中的UI 框架更改中所述,这从 Android 1.6 开始可用。

于 2010-11-06T23:21:47.750 回答