问题描述
- setOnClickListener初级问题
-
public class MainActivity extends ActionBarActivity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_call=(Button)findViewById(R.id.bt_call); bt_call.setOnClickListener(new MyListener()); } class MyListener implements OnClickListener { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub EditText et_number=(EditText)MainActivity.this.findViewById(R.id.et_number); String num=et_number.getText().toString(); Intent intent=new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+num)); startActivity(intent); } } 源代码如上,请问:setOnClickListener中的参数是一个实现onClickListener接口的类,为什么 “bt_call.setOnClickListener(new MyListener());”这句话会报错,错误内容是“The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (MainActivity.MyListener)”
解决方案
setOnClickListener的参数和你的内部类的OnClickListener不是同一个。应该写implements View.OnClickListener
解决方案二:
楼上的正解,可以让Activity继承View.OnClickListener,或者使用匿名类
private void onClickListener = new View.OnClickListener(){
@Override
public void onClick(View v){
........
}
};
也可以在按钮的xml的属性中设置android:onClick="onClickMethod",
然后在Activity中实现onClickMethod(View v)方法就行。这个方法名可以自己设置。
解决方案三:
对了,你实现的应该是Dialog的点击事件。
时间: 2024-12-31 11:57:58