繁体   English   中英

无法在Java中访问View对象(Android)的公共方法

[英]Can't Access Public Methods of View Object(Android) in Java

这似乎是一个基本问题,所以我确信这是我忽略的小事。 也许我一直在看它太久了。

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

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

这是一些相关的片段:

PaintView :(我无法获得公共成员的课程)

public class PaintView extends View {
    public interface OnPaintClickedListener
    {
        public void onPaintClicked(int color);
    }
    private OnPaintClickedListener _onPaintClickedListener;

    public void setOnPaintClickedListener(OnPaintClickedListener listener)
    {
        _onPaintClickedListener = listener;
    }
...
}

PaletteView :(使用PaintView的类)

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);
    }
}

它可以使用接口代码,但它只能找到setOnPaintClickedListener方法。

在此先感谢,我97%肯定一旦有人指出我的错误,我就会觉得自己像个白痴。

改成:

PaintView newPaintView = new PaintView(context, color);

解释...因为您使用的变量是使用类型View声明的,编译器无法找到子类PaintView中定义的方法,所以它会抱怨。

或者,您可以保留相同的声明,并且在调用特定方法时,您必须像这样强制转换为子类:

(( PaintView )newPaintView).setOnPaintClickedListener

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM