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的点击事件。