Android增加监听的三种实现方式
在Android中,为一个按钮增加监听的方式有五种
1.匿名内部类
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局文件 setContentView(R.layout.activity_main); //获得布局中的按钮 btn = (Button) findViewById(R.id.btn); //为按钮增加匿名内部类监听 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub //打印提示信息 Toast.makeText(MainActivity.this, "匿名内部类实现监听", Toast.LENGTH_SHORT).show(); } }); }
2.内部类
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局文件 setContentView(R.layout.activity_main); //获得布局中的按钮 btn = (Button) findViewById(R.id.btn); //内部类实现点击监听 btn.setOnClickListener(new MyClickListener()); } //定义一个内部类 class MyClickListener implements OnClickListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "内部类实现监听", Toast.LENGTH_SHORT).show(); } }
3.实现接口
定义的Activity实现OnClickListener接口,并重新onClick()方法
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局文件 setContentView(R.layout.activity_main); //获得布局中的按钮 btn = (Button) findViewById(R.id.btn); //增加监听,传递this对象,this代表的是被点击的控件 btn.setOnClickListener(this); } @Override public void onClick(View view) { // TODO Auto-generated method stub switch (view.getId()) { case R.id.btn: Toast.makeText(MainActivity.this, "实现接口实现监听", Toast.LENGTH_SHORT).show(); break; } }
4.在布局文件中增加监听
<Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="left|center_vertical" android:text="第一个按钮" android:onClick="click"/><!--说明:click为activity中的方法-->
public void click(View view){/**View参数是必须的,不传递参数会抛出运行异常**/ Toast.makeText(MainActivity.this, "使用布局文件中增加按钮点击事件", Toast.LENGTH_SHORT).show(); }