【问题标题】:Passing information back from EventListener to Activity将信息从 EventListener 传递回 Activity
【发布时间】:2010-11-06 23:06:25
【问题描述】:

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

myButton.setOnClickListener(new MyEventListener());

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

我想知道

的最佳实践

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

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

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

谢谢

【问题讨论】:

    标签: android events listener event-listener dispatch


    【解决方案1】:

    使用显式事件侦听器(无论是否匿名)的替代方法是使用 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 起可用。

    【讨论】:

    • 您好,感谢您的快速回复。刚刚尝试了你的建议,它更整洁 - 谢谢!喜欢安卓:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2015-03-30
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多