[英]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
它是最好的
这是观察者模式的完美案例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.