我是Android的新手,也是一般的事件驱动代码。我没有在我的Activity中嵌入大量的匿名事件监听器类来处理onClick事件等,而是定义了单独的类来保持代码清洁。然后我用它们,例如像这样
myButton.setOnClickListener(new MyEventListener());
因此,当点击'myButton'时,MyEventListener的onClick方法会做一些事情。
我想知道
的最佳做法a)从事件监听器访问我的Activity中的内容。例如,更改标签的文本。 onClick事件采用View in,但这是单击按钮的视图,因此如果标签不是我的按钮的子项,我就不能使用findViewById来获取它的句柄。我已经修改了构造函数以传递对标签的引用,因此事件有一个句柄,但不确定这是否是最优雅的方法。
b)传回信息,例如当我的事件触发时,我可能想要禁用一些EditText字段。我认为正确的方法是从我的事件监听器调度另一个事件,Activity监听,当它看到事件时,禁用有问题的字段。这是在Android中实现它的方式吗?
希望有人能提供帮助,真的很感激。
由于
答案 0 :(得分:2)
使用显式事件侦听器(无论是否匿名)的替代方法是使用xml中的 onClick 属性直接调度到方法,如以下示例所示:
布局xml文件:
<Button android:onClick="buttonClickedCallback" />
现在简单地为您的活动定义一个方法:
class CustomActivity extends Activity {
public void buttonClickedCallback(View clickedButton) {
// do stuff
}
}
中描述的Android 1.6以来,这是可用的