2011-09-27 40 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。