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
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();