Android实现监听事件的四种方式:
1-匿名内部类实现; 2-外部类实现;3-接口实现;4-绑定到标签
1-匿名内部类实现
(1)首先为对象(比如Button)绑定一个监听:button.setOnClickListener( );
(2)在setOnClickListener( )方法中定义一个OnClickListener的匿名内部类,然后重写内部类onClick( )方法
(3)最后在onClick( )方法中,实现监听事件要实现的逻辑
优点: a. 可以在当前类中重复利用该监听器; b.可以自由访问外部类的所有组件
b1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intet = new Intent(MainActivity.this,seekbar.class); startActivity(intet); //finish(); } });
2-外部类实现
(1)首先自定义一个外部类/class(比如说class MyButtonOnClickListener),implements接口OnClickListener,并重写onClick( )方法,在该方法中写要实现的逻辑 (-> 调用这个外部类实现监听事件时,可以用super来调用这个类中的处理逻辑super.onClick(view);
,例如:
class MyOnClicklistener implements View.OnClickListener { public void onClick(View v) { //让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button本身 v.setAlpha(0.5f); }
(2)给对象Button绑定监听器,例如:
buttonin.setOnClickListener(new MyButtonOnClicklistener() { public void onClick(View v) { //noinspection ConstantConditions super.onClick(v); Toast.makeText(MainActivity.this,"点击了登录",Toast.LENGTH_LONG).show(); } });
(3)其中的onClick( )方法可以根据用户需求选择写或者不写
优点:当某个事件监听器被多个GUI界面共享,且主要是完成某种业务逻辑的实现
缺点:a. 不利于提高程序的内聚性
b. 不能自由访问创建GUI界面类的组件,编程不够简洁
3-接口实现
直接在Acitivty中定义事件处理方法!
优点:非常简洁
缺点:
a. 这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱; b. 如果activity界面类需要实现监听器接口,让人感觉比较怪异
public class ActivityListener extends Activity implements OnClickListener { private EditText show; private Button bn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); show = (EditText)findViewById(R.id.show); bn = (Button)findViewById(R.id.bn); bn.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub show.setText("按钮被单击了!"); }
4-绑定到标签
在布局中要发送事件源中定义一个
android:onClick="clickHandler"
然后在该布局对应的Activity定义一个 void clickHandler(void source)
方法
网友评论