//从fragment开始向上查找实现了接口listenerClass的fragment或activity
public <T> T findInterfaceByClass(Fragment fragment, Class<T> listenerClass) {
if (listenerClass != null) {
if (fragment != null) {
if (listenerClass.isInstance(fragment)) {
return (T) fragment;
} else {
return findInterfaceByClass(fragment.getParentFragment(), listenerClass);
}
} else {
if (listenerClass.isInstance(getActivity())) {
return (T) getActivity();
} else {
return null;
}
}
}
return null;
}
此方法主要用于有包含关系(child Fragment 与 parent Fragment / Activity 关系)的fragment 与其 parent Fragment /Activity之间通信,如数据传递,避免了声明接口实例、声明设置该接口实例方法,使用较为方便。