适用于Android的公共界面

时间:2014-06-21 10:33:04

标签: android interface

我的界面需要一些帮助。我想我根本不理解它们。 所以我创建了这个接口来通知在发生某个事件时实现它的每个类。

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课程中,以便在颜色变化的同时得到通知。我很确定原因是我不太了解它们是如何工作的,所以有人能指出我正确的方向吗?谢谢!

2 个答案:

答案 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);

Observer Pattern Wikipedia

答案 1 :(得分:0)

界面只是将一堆相关方法组合在一起的一种方式。然后,实现此接口需要您实现由接口组合在一起的所有方法。

Java教程很好地阅读了这个主题:

What is an interface?

这是关于android中的侦听器接口的Stackoverflow线程:

How to create our own Listener interface in android?

简而言之,您不能直接使用该接口,因为它只指定了实现类的实现方法。