Can';t在Java中访问视图对象的公共方法(Android)

Can';t在Java中访问视图对象的公共方法(Android),java,android,Java,Android,这似乎是一个基本的问题,所以我肯定我忽略了一些小问题。也许我只是看得太久了 我一直在尝试在视图中创建onClick侦听器,我有一个公共的set方法来设置侦听器。但是,当我试图在类之外调用该方法时,我得到一个错误,表示它无法解析该方法 我尝试过创建其他公共方法或公共成员变量,但由于某些原因,我无法在类之外查看它们 以下是一些相关片段: PaintView:(我无法从中获取公共成员的类) PaletteView:(使用PaintView的类) 它对接口代码没有问题,但它只能找到setOnPaintC

这似乎是一个基本的问题,所以我肯定我忽略了一些小问题。也许我只是看得太久了

我一直在尝试在视图中创建onClick侦听器,我有一个公共的set方法来设置侦听器。但是,当我试图在类之外调用该方法时,我得到一个错误,表示它无法解析该方法

我尝试过创建其他公共方法或公共成员变量,但由于某些原因,我无法在类之外查看它们

以下是一些相关片段:

PaintView:(我无法从中获取公共成员的类)

PaletteView:(使用PaintView的类)

它对接口代码没有问题,但它只能找到setOnPaintClickedListener方法

提前感谢,我97%确信一旦有人指出我的错误,我会觉得自己像个白痴。

改为:

PaintViewnewPaintView=newPaintView(上下文、颜色)

解释…由于您使用的变量是使用类型View声明的,编译器无法找到在子类PaintView中定义的方法,因此它抱怨

或者,您可以保留相同的声明,并且在调用特定方法时,必须对子类执行如下转换:


((PaintView)newPaintView)。设置paintclickedlistener

哎呀,谢谢你注意到这一点,我肯定我会盯着它看几个小时。期限一过,我就接受答复。谢谢
public class PaintView extends View {
    public interface OnPaintClickedListener
    {
        public void onPaintClicked(int color);
    }
    private OnPaintClickedListener _onPaintClickedListener;

    public void setOnPaintClickedListener(OnPaintClickedListener listener)
    {
        _onPaintClickedListener = listener;
    }
...
}
public class PaletteView extends ViewGroup {
....
    public void addColor(Context context, int color)
    {
        View newPaintView = new PaintView(context, color);

        //setOnPaintClickedListener gives the message "Cannot resolve method setOn...blah blah'
        newPaintView.setOnPaintClickedListener(new PaintView.OnPaintClickedListener()
        {
            @Override
            public void onPaintClicked(int color)
            {

            }
        });
        this.addView(newPaintView);
    }
}