我的界面需要一些帮助。我想我根本不理解它们。 所以我创建了这个接口来通知在发生某个事件时实现它的每个类。
public interface OnColorsChangeListener {
void onColorsChangeListener(ColorsProp colorsProp);
}
我的班级界面:
private OnColorsChangeListener mCallback;
... // other code
// the event occurs here so i call:
mCallback.onColorsChangeListener(mProps);
// but of course here i get an NPE becouse this is undefined in this class.. well, with some replies here i'll understand better how to use that for reach my point
实现它的类:
public class ClassTest implements OnColorsChangeListener {
... // other code
@Override
public void onColorsChangeListener(ColorsProp colorsProp) {
Log.d(TAG, "Color changed! " + colorsProp.color);
}
我把它放在4/5课程中,以便在颜色变化的同时得到通知。我很确定原因是我不太了解它们是如何工作的,所以有人能指出我正确的方向吗?谢谢!
答案 0 :(得分:1)
示例说明:
你必须实例化你的回调,&它必须是你班级的一个实例
private OnColorsChangeListener mCallback;
mCallback = new ClassTest();
mCallback.onColorsChangeListener(mProps);
但是,如果您需要多个回调,则需要使用Observer模式。 简单的例子:
private List<OnColorsChangeListener> mCallbacks = new ArrayList<OnColorsChangeListener>();
mCallbacks.add(new ClassTest());
mCallbacks.add(new OtherClass());
for(OnColorsChangeListener listener : mCallbacks) {
listener.onColorsChangeListener(mProps);
}
显然,如果你有班级,在其他地方你不会新建它,你会使用那个参考:
mCallbacks.add(mClassTest);
答案 1 :(得分:0)
界面只是将一堆相关方法组合在一起的一种方式。然后,实现此接口需要您实现由接口组合在一起的所有方法。
Java教程很好地阅读了这个主题:
这是关于android中的侦听器接口的Stackoverflow线程:
How to create our own Listener interface in android?
简而言之,您不能直接使用该接口,因为它只指定了实现类的实现方法。