2012-04-02 39 views
2

我已經在我的Android應用程序&創建一個按鈕,我試圖設置的onclick聽者運行的onClick方法類似如下的Android setOnClickListener(這)錯誤

... 
Button btn_ok; 
    btn_ok = (Button)findViewById(R.id.button1); 
    btn_ok.setOnClickListener(this); 


} 
public void onClick() { 
    EditText uN = (EditText) findViewById(R.id.EditText04); 
    uN.setText("Clicked!"); 
    } 

但是Eclipse顯示錯誤&說:「setOnClickListener」需要投射參數。鑄造後就是這個樣子

btn_ok.setOnClickListener((OnClickListener) this); 

然後當我運行程序模擬器說:「計劃意外停止」 ...... 我怎樣才能解決這個問題?

+1

最有可能你正在導入/執行了錯誤的'onClickListener'確保它是一個'View'而不是一個用於「DialogInterface」。 – Squonk 2012-04-02 16:34:30

回答

7

確保您的類實現了View.OnClickListener。你不能只添加onClick方法,你必須實現接口

+0

Thanx ..它的工作 – Grant 2012-04-02 16:36:38

5

onClick方法的簽名是錯誤的,這導致我相信你實際上沒有實現接口View.OnClickListener

簽名應該是:

public void onClick(View v) 
{ 
    //your implementation, v is your button that was clicked 
} 

注意,被點擊的看法是傳遞作爲參數,所以沒有必要調用findViewByIdonClick方法內部。

2

setOnClickListener採取OnClickListener實例作爲參數和OnClickListener是一個接口,其內容的onClick()方法和要傳遞此處setOnClickListener(本);當前上下文。所以你有兩個選擇要麼在你的活動和第二次使用實現OnClickListener這樣:

this.btn_ok.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    //do your work here 
    } 
    }); 
4

實現從活動onClickListener和覆蓋的方法:

@override 

public void onClick(View v) 
{ 
    switch(v.getId()){ 
     case R.id.button1: 
     EditText uN = (EditText) findViewById(R.id.EditText04); 
     uN.setText("Clicked!"); 
     break; 
     case default: 
     break; 
} 
} 

希望它能幫助。

1

確保您所用的接口View.OnClickListener,並通過查看到的onClick方法