2010-11-23 65 views
2

這必須是一個noob問題,但我無法找到適當的等待,以達到以下目的:在android中訪問重寫方法的參數的子方法?

在android中,我做了一個子類MyView擴展一個View類。在B中,我定義了View類中不存在的方法mMethod。

現在,我想在MyView上設置一個OnClickListener接口。這樣做時,我必須在定義新的OnClickListener時重寫onClick方法。此外,我想訪問onClick中的mMethod方法,但是overriden方法期望的是一個View類實例,而不是MyView的方法。那麼我能做什麼?

爲了更精確:

public class MyView extends View{ 
    ... 
    public void mMethod(){ 
    ... 
    } 
} 

而在主類(活動)

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?如果是這樣,該怎麼辦?我應該定義一個子接口嗎?

謝謝!

回答

3

嗯,你可以使用:

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

你知道你的右視圖經營這種方式 - 它會拋出一個異常,如果你被賦予一種錯誤的觀點。 (如果您不想拋出異常,則可以使用instanceof來測試它是否是正確的視圖。)

+0

非常感謝您,非常快,我無法檢查接受的答案! – Tom 2010-11-23 12:05:30