How to get listener of a view

前端 未结 4 1529
清酒与你
清酒与你 2020-12-28 21:14

I write service that interacts with other apps. It registers listeners on views (buttons, textviews,...), that already have listeners. I need to replace them with my own lis

4条回答
  •  情话喂你
    2020-12-28 21:49

    create classes that implements OnClickListener

    public static class MyClickListener1 implements OnClickListener{
        Activity mActivity;
        MyClickListener1(Acivity activity){
          mActivity=activity;
        }
        @Override
        public void onClick(View v) {
                //do something
        }
    }
    
    public static class MyClickListener2 implements OnClickListener{
        @Override
        public void onClick(View v) {
                //do something
        }
    }
    

    and in your code you can easily use them:

    btn.setOnClickListener(new MyClickListener1(this));
    btn.setOnClickListener(new MyClickListener2());
    

    or you can create instances and reuse them:

    OnClickListener listener1 = new MyClickListener1(this);
    OnClickListener listener2 = new MyClickListener2();
    btn.setOnClickListener(listener1);
    btn.setOnClickListener(listener2);
    

    you can also define a constructor to pass whatever you need in these classes. I usually pass the activity like in MyClickListener1

    EDIT: If you want to have the listener like object in the button, you can use the tag.

    btn.setTag(listener1);
    btn.setOnClickListener(listener1);
    

    and then to get it use

    OnClickListener old_listener = (OnClickListenr)btn.getTag();
    

提交回复
热议问题