将信息从EventListener传递回Activity

时间:2010-11-06 23:06:25

标签: android events listener event-listener dispatch

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

myButton.setOnClickListener(new MyEventListener());

因此,当点击'myButton'时,MyEventListener的onClick方法会做一些事情。

我想知道

的最佳做法

a)从事件监听器访问我的Activity中的内容。例如,更改标签的文本。 onClick事件采用View in,但这是单击按钮的视图,因此如果标签不是我的按钮的子项,我就不能使用findViewById来获取它的句柄。我已经修改了构造函数以传递对标签的引用,因此事件有一个句柄,但不确定这是否是最优雅的方法。

b)传回信息,例如当我的事件触发时,我可能想要禁用一些EditText字段。我认为正确的方法是从我的事件监听器调度另一个事件,Activity监听,当它看到事​​件时,禁用有问题的字段。这是在Android中实现它的方式吗?

希望有人能提供帮助,真的很感激。

由于

1 个答案:

答案 0 :(得分:2)

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

布局xml文件:

 <Button android:onClick="buttonClickedCallback" />

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

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

UI framework changes in Android 1.6

中描述的Android 1.6以来,这是可用的