这肯定是一个菜鸟问题,但我找不到适当的等待来实现以下目标:
在android中,我创建了一个子类MyView来扩展View类。在 B 中,我定义了 View 类中不存在的方法 mMethod。
现在,我想在 MyView 上设置一个 OnClickListener 接口(interface)。为此,我必须在定义新的 OnClickListener 时重写 onClick 方法。此外,我想访问 onClick 中的 mMethod 方法,但重写的方法需要一个 View 类实例,而不是 MyView 的实例。那我能做什么呢?
更准确地说:
public class MyView extends View{
...
public void mMethod(){
...
}
}
并且在主类(Activity)中
MyView myView = new MyView ()
//It's not the correct constructor, but it's not the point
myView.setOnClickListener(new OnClickListener(){
@Override
public boolean onClick(View v){
//Here I would like to access mMethod of MyView
???
}
}
使用myView.mMethod()
是唯一的解决方案吗?是否可以将 v
向下转换为 (MyView)v
?如果是这样,该怎么办?我应该定义一个子接口(interface)吗?
谢谢!
最佳答案
那么,你可以使用:
public boolean onClick(View v) {
MyView mv = (MyView) v;
mv.myMethod();
}
这样你就知道你正在操作正确的 View - 如果你得到错误类型的 View ,它会抛出异常。 (如果您不想引发异常,可以使用 instanceof
首先测试它是否是正确的 View 类型。)
关于java - 访问android中重写方法的参数的子方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4255768/