在实现该方法的所有类上调用方法

时间:2016-09-29 09:31:33

标签: java interface

我有一个Activity和10个片段。我已经创建了一个接口并在所有Fragments上实现它。如何从Activity中的所有片段调用该方法?

  public interface OnConnectListener {
      void isDeviceConnected(boolean b);
  }

更新

使用你的建议我这样做了:

public void isDeviceConnected(boolean b, List fragmentList) {
    for (OnConnectListener listener : getOnConnectListeners(fragmentList)) {
        listener.isDeviceConnected(b);
    }
}

public List<OnConnectListener> getOnConnectListeners(List fragmentList) {
    List<OnConnectListener> listeners = new ArrayList<>();
    for (Object o : fragmentList) {
        if (o instanceof OnConnectListener) {
            listeners.add((OnConnectListener) o);
        }
    }
    return listeners;
}

现在我只使用:

isDeviceConnected(true, fragmentList);

非常感谢你。

2 个答案:

答案 0 :(得分:0)

假设你的“Activity”类拥有10个“onConnectListener”实例的引用,你可以循环遍历每个实例并像这样调用isDeviceConnected:

private List<onConnectListener> onConnectListeners;
....
for(onConnectListener onConnectListener: onConnectListeners) {
    onConnectListener.isDeviceConnected(true); // or false
}

顺便说一下:Java命名约定声明类名以大写字母开头,而字母通常以字母“I”开头 因此,如果您将界面命名为IOnConnectListener

,那就最好了

答案 1 :(得分:0)

这是观察者模式的完美案例

http://www.oodesign.com/observer-pattern.html