在Android开发中经常会用到回调,我很长一段时间都没搞懂回调。所以在这里记录下我对回调的理解,希望可以对他人有所帮助。
demo在此:http://download.csdn.net/detail/violetjack0808/9432382
我的理解是:回调接口就是去实现一些该类无法实现的功能。或者说挖个坑,等别人来帮忙完成。
下面是实现过程:
1. 效果展示
这里创建了一个Activity和一个Fragment,要求使用Fragment中的Button来控制Activity中的TextView。效果如下图。
2.定义接口、实例化接口
在Fragment中创建接口,并在fragment中使用set方法实例化接口。只要Activity使用setMyClickListener方法来实现了MyClickListener接口那么这个callback就可以对Activity进行操作了。
private MyClickListener callback;
public void setMyClickListener(MyClickListener callback){
this.callback = callback;
}
public interface MyClickListener{
void MyClick(View view);
}
3.使用接口
在Fragment中使用接口中的方法MyClick。
root.findViewById(R.id.btnFragment).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callback.MyClick(view);
}
});
4.实现接口
在Activity中,实例化fragment,并使用setMyClickListener方法实现MyClickListener接口。并在接口的MyClick方法中完成Fragment对Activity的操作。
tvShow = (TextView) findViewById(R.id.tvShow); MainFragment fragment = new MainFragment(); fragment.setMyClickListener(new MainFragment.MyClickListener() { @Override public void MyClick(View view) { tvShow.setText("被点击了" + i +"次"); i++; } }); getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, fragment).commit();
这里就实现了Fragment中的Button操作Activity中的TextView的功能。