2011-09-27 62 views
0
問題

嘿是新到Android,我只是想處理一個click事件,但我有問題...... THI SIS我的代碼:與OnClickListener

package karim.test; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Button; 


public class TestActivity extends Activity implements android.view.View.OnClickListener { 


    private Button b1; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

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

    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     return true; 
    } 

    @Override 
    public void onClick(View v) { 



    } 

,我得到這個錯誤:

​​

你能告訴我什麼是錯的嗎?

請具體說明!!

+0

確認鏈接 http://developer.android.com/guide/topics/ui/ui-events.html –

回答

1
public class TestActivity extends Activity{ 


    private Button b1; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     b1 = (Button) this.findViewById(R.id.button1); 
     b1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

      } 
     }); 

    } 

或在您的情況

public class TestActivity extends Activity implements android.view.View.OnClickListener { 


    private Button b1; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

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

    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     return true; 
    } 

    @Override 
    public void onClick(View v) { 
    if(v==b1) 
    { 
     //button logic 
    } 

    } 
+0

如果OP的代碼沒有編譯,這段代碼也不會編譯。 –

+0

在你的第一種情況下不需要添加onclicklistener的工具 – Pratik

3

我的猜測是,你用Java 5編譯器(或Java 5編譯器設置在IDE)編制。在Java 5中,@Override只能用於覆蓋的方法的方法,而不是接口。它擴展到Java 6中的接口方法覆蓋。

更改編譯器版本,或刪除onClick方法中的@Override註釋。

+0

我有jdk 6! –

+0

是的,但看看你的編譯偏好。見@ anujprashar的答案 –

0

進行了擴展,「JB Nizet」的答案:

處理onClick -events是(在我看來)最巧妙的方法對onClick-attribute添加到XML的佈局定義。

<Button android:text="Click Me!" 
    android:onClick="doSomething" 
/> 

在你的java代碼:

public void doSomething(View v){ 
    // Do stuff here 
} 

這樣一來,你可以爲每一個onClick -event定義一個方法。這是可用的,因爲對應於Android 1.6的API-Level 4

0

看起來像是在eclipse中爲您的項目使用java 6下面的編譯器。右鍵點擊你的項目,進入屬性 - > Java編譯器。確保您在編譯器合規性字段中選擇了1.6。