三种Button监听事件设置方法
匿名内部类外部类接口方式直接创建匿名内部类。
loginButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 在此处监听 System.out.println("我的按钮被点击了"); } });新建一个外部类,实现OnClickListener接口,并重写onClick方法。
class MyOnClickListener implements OnClickListener{ @Override public void onClick(View v) { Log.i("tag", "???"); } }然后在OnCreate函数中,创建该对象实例并使用。
MyOnClickListener listener = new MyOnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub super.onClick(v); Toast.makeText(MainActivity.this, "!!!", 1).show(); } } loginButton.setOnClickListener(listener);在事件响应过程中,先执行在创建对象实例时重写的onClick方法,后执行类中的onClick方法。即,先执行
Toast.makeText(MainActivity.this, "!!!", 1).show();然后执行
Log.i("tag", "???");接口方式需要Activity类实现OnClickListener接口,并重写onClick方法。
public class MainActivity extends Activity implements OnClickListener{ private ImageButton imageButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //将布局XML文件引入到activity中 setContentView(R.layout.activity_main); /* * 初始化当前所需要控件 * findViewById--返回一个View对象,对其强制类型转换。 * */ imageButton = (ImageButton)findViewById(R.id.imageButton1); imageButton.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("tag", "接口实现"); } }