[英]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.