创建自定义注释ButterKnife

时间:2014-12-23 03:44:45

标签: android butterknife

我试图为ButterKnife创建一个自定义监听器注释,但我无法使其工作。 这是我的注释:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
@ListenerClass(
        targetType = "com.maddogs.mymoney.views.CameraImageView",
        setter = "setCameraImageViewListener",
        type = "com.maddogs.mymoney.views.CameraImageViewListener",
        method = @ListenerMethod(
                name = "onCloseClick",
                parameters = {"com.maddogs.mymoney.views.CameraImageView"},
                returnType = "boolean",
                defaultReturn = "true"
        )
)
public @interface OnCloseClick {
    int[] value() default { View.NO_ID };
}

我的CameraImageView:

 @Override
    public boolean onTouchEvent(MotionEvent event) {
    if(event.getAction() != MotionEvent.ACTION_DOWN
            &&(event.getX(0) <= this.getWidth()
            && event.getY(0) >= 0)
            && event.getX(0) >= this.getWidth() - closeBitmap.getWidth()
            && event.getY(0) <= closeBitmap.getHeight()){

        if(listener == null)
            throw new NullPointerException("CameraImageViewListener cannot be null");

        return listener.onCloseClick(this);
    }
    return super.onTouchEvent(event);
}

public void setCameraImageViewListener(CameraImageViewListener listener) {
        this.listener = listener;
    }

public static interface CameraImageViewListener{
    boolean onCloseClick(CameraImageView view);
}

我的项目结构:

Structure

侦听器始终为null。怎么了?? 感谢

1 个答案:

答案 0 :(得分:7)

您需要将其添加到ButterKnifeProcessor中的this list,以便它由注释处理器生成代码。

我一直在原型化支持不需要修改库的自定义注释的样子。没有关于它何时发货的时间表。