【问题标题】:Newbie Java developer questions - inter class communication with events新手 Java 开发人员问题 - 类间与事件的通信
【发布时间】:2011-01-11 04:38:23
【问题描述】:

请原谅这个问题的基本性质 - 但我们都必须从某个地方开始。我做了一些谷歌搜索,但所有答案似乎都与 UI 事件有关。

我正在创建一个非常简单的 Android 应用程序,它将在屏幕上显示您的位置。我有一个扩展 Activity 的主类(目前是 HelloAndroid),并且我创建了一个 LcoationUpdateHandler 类来监听更新。

HelloAndroid 拥有一个 LocationUpdateHandler 的实例,所以我的问题是 LocationUpdateHandler 如何与 HelloAndroid 进行通信。

在 flex 中,我会将一个事件从一个发送到另一个,但从我所做的搜索来看,这似乎不是一种非常 java-y 的做事方式?

感谢您的帮助。

【问题讨论】:

    标签: java android events


    【解决方案1】:

    当您的 HelloAndroid 实例创建 LocationUpdateHandler 的实例时,它可以在构造函数中传递对自身的引用,LocationUpdateHandler 可以存储该引用以在发生事件时用于将来的方法调用。

    对于这些情况,您实际上并不需要知道什么类型的对象实例化了 LocationUpdateHandler。这是接口进来时,您可以定义一个定义事件方法的接口并实现该接口,以便 LocationUpdateHandler 可以保留对该接口的引用以传递事件。

    如果情况是对称的,两个类可以实现相同的事件接口。

    【讨论】:

    • 感谢两位的回答 - 今天我真的很感激 Stackoverflow。因为我知道所有的答案,所以我在 Flex 世界中从来没有使用过它;)。我不喜欢将 HelloAndroid 上的依赖项添加到 LocationUpdateHandler 的想法,但正如您所说,如果我使用接口,那么就不会依赖该类。再次感谢
    【解决方案2】:

    听起来您正在寻找的是Observer pattern。它的工作方式是观察者向他们正在观察的对象注册,以便他们可以收到事件通知。

    在您的具体情况下,如果您希望LocationUpdateHandler 将信息推送到HelloAndroid,它必须知道HelloAndroid。所以你的LocationUpdateHandler 至少应该包含对HelloAndroid 的引用,但是为了概括这一点,它应该有一个List 的观察者,它们都实现了一个包含回调函数的公共接口,只要LocationUpdateHandler 有一个回调函数,就会调用该函数。更新。

    【讨论】:

      猜你喜欢
      • 2010-12-25
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多