Can';t在Java中访问视图对象的公共方法(Android)
这似乎是一个基本的问题,所以我肯定我忽略了一些小问题。也许我只是看得太久了 我一直在尝试在视图中创建onClick侦听器,我有一个公共的set方法来设置侦听器。但是,当我试图在类之外调用该方法时,我得到一个错误,表示它无法解析该方法 我尝试过创建其他公共方法或公共成员变量,但由于某些原因,我无法在类之外查看它们 以下是一些相关片段: PaintView:(我无法从中获取公共成员的类) PaletteView:(使用PaintView的类) 它对接口代码没有问题,但它只能找到setOnPaintClickedListener方法 提前感谢,我97%确信一旦有人指出我的错误,我会觉得自己像个白痴。改为:Can';t在Java中访问视图对象的公共方法(Android),java,android,Java,Android,这似乎是一个基本的问题,所以我肯定我忽略了一些小问题。也许我只是看得太久了 我一直在尝试在视图中创建onClick侦听器,我有一个公共的set方法来设置侦听器。但是,当我试图在类之外调用该方法时,我得到一个错误,表示它无法解析该方法 我尝试过创建其他公共方法或公共成员变量,但由于某些原因,我无法在类之外查看它们 以下是一些相关片段: PaintView:(我无法从中获取公共成员的类) PaletteView:(使用PaintView的类) 它对接口代码没有问题,但它只能找到setOnPaintC
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);
}
}