- 在一个类中进行接口定义和调用接口中的方法
public class Topbar { //需要一个变量来映射调用者传进来的一个接口 private topbarClickListner listener; //定义一个接口 public interface topbarClickListner{ //定义leftButton的点击事件 public void leftButtonClick(); //定义rightButton的点击事件 public void rightButtonClick(); } //暴露一个方法给调用者。调用者可以把接口的实现以匿名内部类的方式(或者实现接口的类的对象)传递进来 public void setOnTopbarClickListener(topbarClickListner listener){ this.listener=listener;//这样调用者就和模板联系在一起 } Button leftButton=(Button)findViewById(R.id.left_button); Button rightButton=(Button)findViewById(R.id.right_button); //修改点击事件,不在点击事件中进行具体的逻辑实现,而是调用接口引用的方法 leftButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ listener.leftButtonClick(); } }); rightButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ listener.rightButtonClick(); } }); //该类不关心具体的点击事件的实现,具体的实现而是交给调用者来决定,这里接口更像是一种引用 }
- 在另一个类中进行点击事件的具体实现
public class MainActivity extends Activity{ protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Topbar topbar=(Topbar)findViewById(R.id.topbar); //把一个接口的实现以匿名内部类的方式传递进来 topbar.setOnTopbarClickListener(new topbarClickListner(){ @Override public void leftButtonClick() { //添加点击事件的具体实现 Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show(); } @Override public void rightButtonClick() { Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show(); } }); } }
- 接口回调机制就是接口定义与实现的分离(或者是定义,实现,调用的分离(例如切换摄像头博客)),定义的时候更像是一种引用,只是说明有这样一种方法,但是没有具体的方法体,只有在需要实际调用该方法的时候才对方法进行补全,这样更利于功能的模块化实现,即在需要修改功能的时候,只需要在调用处进行逻辑修改就可以了,而封装接口的模块不需要改动。
接口回调机制详解
最新推荐文章于 2019-03-06 14:15:51 发布