簡體   English   中英

在實現該方法的所有類上調用方法

[英]Call a method on all classes that implements that method

我有一個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);

非常感謝。

假設您的“Activity”類包含10個“onConnectListener”實例的引用,您可以循環遍歷每個實例並調用isDeviceConnected,如下所示:

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

順便說一下:Java命名約定聲明類名以大寫字母開頭,而且它們通常以字母“I”開頭所以如果你命名你的接口IOnConnectListener它是最好的

這是觀察者模式的完美案例

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM