1、匿名内部类作为监听器
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
2、内部类作为监听器(可以使用)
button.setOnClickListener(new MyListener());
class MyListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case value:
break;
}
}
}
3、Activity本身继承OnClickListener接口作为监听器使用(可以使用)
public class MainActivity extends Activity implements OnClickListener{
void methodA(){
button.setOnClickListener(this);
}
//继承接口监听处理方法
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bt_call:
Toast.makeText(mContext, "拨打中", Toast.LENGTH_LONG).show();
callPhone(et_num.getText().toString().trim());
break;
}
}
}
4、外部类作为监听器
MainActivity.java
button.setOnClickListener(new MyListener());
MyListener.java
public class MyListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
5、直接在控件中设置onclick属性 ctri+shift+g检测不到被引用,很可能被删掉,不建议使用
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt_call"
android:onClick="onClickButton"
android:text="@string/bt_call"/>
MainActivity.java
public void onClickButton(View v){
}