关于Android 设置监听的的四种方式的理解

android 四种监听方式

  • 实现监听的接口
  • 实现匿名内部类
  • 在xml 上设置 监听(不建议采用)
  • 内部类的形式
    -

经常采用的形式 (实际开发中经常用到的,建议采用)


public class MainActivity extends Activity implements OnClickListener {
    private Button mBut1, mBut2, mBut3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    private void initView() {
        mBut1 = (Button) findViewById(R.id.But1);
        mBut2 = (Button) findViewById(R.id.But2);
        mBut3= (Button) findViewById(R.id.But3);
        mBut1.setOnClickListener(this);
        mBut2.setOnClickListener(this);
        mBut3.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        int ID = v.getId();
        if (R.id.But1 == ID) {
            Log.e("main", "点击按钮一");
        } else if (R.id.But2 == ID) {
            Log.e("main", "点击按钮二");
        } else if(R.id.But3==ID){
            Log.e("main", "点击按钮三");
        }
    }
}

采用匿名内部类和其他两种的形式

public class MainActivity extends Activity {

    private Button mBtn1;
    private Button mBtn2;
    private MyOnclick onclick = new MyOnclick();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    //initView()->初始化控件 
    private void initView(){
        mBtn1 = (Button) findViewById(R.id.Btn1);
        mBtn2 = (Button) findViewById(R.id.Btn2);
        mBtn2.setOnClickListener(onclick);
        mBtn1.setText("按钮");
        mBtn1.setBackgroundResource(R.drawable.ic_launcher);
        //tag->筛选标签
        //msg->日志内容
        Log.e("Main", "initview设置监听前");
        //setOnClickListener->给按钮添加点击监听事件
        //匿名内部类监听方式->不推荐
        mBtn1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //点击监听进入方法->mBtn1按钮被点击时进入
                //v->被点击的view
                //按钮监听回调方式  
                Log.e("Main", "initview监听执行中");
                //处理按钮被点击后操作
            }
        });
        Log.e("Main", "initview设置监听后");
    }

    public void MyOn(View v){
        Log.e("Main","XML监听");
    }

    //内部类监听
    private class MyOnclick implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            Log.e("Main","内部类监听执行");
        }

    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值