安卓开发之事件监听器

借图

事件监听机制中由事件源事件事件监听器三类对象组成 处理流程如下: Step 1:为某个事件源(组件)设置一个监听器,用于监听用户操作 Step 2:用户的操作,触发了事件源的监听器 Step 3:生成了对应的事件对象 Step 4:将这个事件源对象作为参数传给事件监听器 step 5:事件监听器对事件对象进行判断,执行对应的事件处理器(对应事件的处理方法)

五种不同的实现形式

1、直接用匿名内部类

直接setXxxListener后,重写里面的方法即可; 通常是临时使用一次,复用性不高

btnshow = (Button) findViewById(R.id.btnshow);
        btnshow.setOnClickListener(new View.OnClickListener(){
            //重写点击事件的处理方法onClick()
            @Override
            public void onClick(View v){
                //显示提示
                Toast.makeText(getApplicationContext(),"你点击了按钮", Toast.LENGTH_SHORT).show();
            }
        });
2、使用内部类


        btnshow.setOnClickListener(new BtnClickListener());
    }

    class BtnClickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();

        }
    }
3、使用外部类

和外部类但是,但是不能外部类直接访问组件,所以需要通过构造函数传入组件。


4、直接使用Activity作为事件监听器

//让Activity方法实现OnClickListener接口    
public class MainActivity extends Activity implements OnClickListener{    
    private Button btnshow;    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);    
            
        btnshow = (Button) findViewById(R.id.btnshow);    
        //直接写个this    
        btnshow.setOnClickListener(this);    
    }    
    //重写接口中的抽象方法    
    @Override    
    public void onClick(View v) {    
        Toast.makeText(getApplicationContext(), "点击了按钮", Toast.LENGTH_SHORT).show();         
    }         
}   
直接让Activity继承OnClickListener,然后按钮直接监听this,并实现Activity的触发方法onClick。



5、直接绑定到标签

标签中加上这个,myclick是对应函数名

android:onClick="myclick"
@Override    
    public void myClick(View v) {    
        Toast.makeText(getApplicationContext(), "点击了按钮", Toast.LENGTH_SHORT).show();         
    } 






发表评论 / Comment

用心评论~