2

这一定是一个菜鸟问题,但我找不到合适的等待来实现以下目标:

在 android 中,我创建了一个子类 MyView 扩展了一个 View 类。在 B 中,我定义了 View 类中不存在的方法 mMethod。

现在,我想在 MyView 上设置一个 OnClickListener 接口。这样做,我必须在定义一个新的 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?如果是这样,该怎么做?我应该定义一个子接口吗?

谢谢!

4

1 回答 1

3

好吧,你可以使用:

public boolean onClick(View v) {
    MyView mv = (MyView) v;
    mv.myMethod();
}

这样你就知道你在正确的视图上操作——如果你得到错误的视图,它会抛出异常。(如果你不想抛出异常,你可以先用instanceof它来测试它是否是正确的视图。)

于 2010-11-23T12:00:21.033 回答