2011-07-13 53 views
0

下面是我的计划,我收到此错误:setOnClickListener没有工作,抛出错误

Description Resource Path Location Type 
The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (welcome) welcome.java /testcalculator/src/com/testcalculator line 31 Java Problem 

welcome.java

package com.testcalculator; 
public class welcome extends Activity{ 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.welcome1); 
     Button playBtn = (Button) findViewById(R.id.playBtn); 
     playBtn.setOnItemClickListener(); 
     Button exitBtn = (Button) findViewById(R.id.exitBtn); 
     exitBtn.setOnClickListener(this); 
    } 
    public void onClick(View v) { 
     Intent i; 
     switch (v.getId()){ 
     case R.id.playBtn : 
      i = new Intent(this, testcalculator.class); 
      startActivity(i); 
      break; 
     case R.id.exitBtn : 
      finish(); 
      break; 
     } 
    } 
    } 

的问题是,我拥有所有必需的导入选项在我的问题,但仍然收到错误消息。

+0

空行是没有任何帮助...... – Siddharth

回答

1

你是通过你的Activity类的OnClickListener这一行:

exitBtn.setOnClickListener(this); 

然而,你的类需要显式声明它正在实施View.OnCLickListener接口。类报关行改成这样:

public class welcome extends Activity implements OnClickListener 

一对夫妇的其他注意事项:

你写playBtn.setOnItemClickListener()。也许你的意思是playBtn.setOnClickListener(this)?按钮没有OnItemClickListeners

您还可以设置OnClickListener,而不必让活动类本身通过声明匿名类来实现接口。像这样:

playBtn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // playBtn code 
    } 
}); 

exitBtn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // exitBtn code 
    } 
}); 

这种方式更经常使用,因为它更具可读性。通过分离按钮的onClick代码,你可以很容易地告诉哪个按钮做什么,而不是把它全部放到一个方法中,并让类自己实现OnClickListener。

0
 
Button playBtn = (Button) findViewById(R.id.playBtn); 
playBtn.setOnItemClickListener(); 

它应该是setOnClickListener(this),如退出按钮所做的那样。退出按钮是否工作?

0

您正在为两个OnClickListener类设置常见的onClick方法,这是错误的。尝试为两个按钮的OnClickListener类使用两种不同的onClick方法。

0

如果你想使用this作为exitBtn.setOnClickListener(this);,你必须声明你的活动将实现接口OnClickListener

public class welcome extends Activity implements OnClickListener { 
... 
} 
0

试试这个:

public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.welcome1); 


    //////// MENU ////////// 
    Button playBtn = (Button) findViewById(R.id.playBtn); 
    playBtn.setOnItemClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      i = new Intent(this, testcalculator.class); 
      startActivity(i); 
     } 
    }); 

    Button exitBtn = (Button) findViewById(R.id.exitBtn); 
    exitBtn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
} 

或更改您的类来实现OnClickListener like:public class welcome extends Activity implements OnClickListener

+0

公共类扩展欢迎Activity实现OnClickListener修复了这个问题,我删除了以下内容: import java.io.IOException; import java.util.List; import android.provider.SyncStateContract.Constants; import android.widget.AdapterView.OnItemClickListener; – super

-1

您需要编写

playBtn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // code here 
    } 
}); 

以及相同的按钮。我认为它会比你的版本更好。:)

0

导入以下:

import android.view.View.OnClickListener; 
0

你写的主要活动的顶端这条线上,实现OnClickListener,

public class welcome extends Activity implements OnClickListener 
相关问题