如果你想把Android Fragment事件回调给Activity,或者把Activity事件回调到Fragment界面,都需要用到Android接口回调事件,方法就是在一个页面上定义一个接口,然后另外一个页面implements实现这个接口,这样就可以传递事件或者参数了!
下面的示例是一个Fragment生命周期同步的接口回调示例,打算在Activity中实现它,开始来学习吧!
一:首先在Fragment上建立一个callback接口:
public interface SampleCallback {
void onButtonClicked();
}二:分配callback回调事件,在需要传递回调事件的地方使用SampleCallback事件,代码如下:
public final class SampleFragment extends Fragment {
private SampleCallback callback;
@Override
public void onAttach(Context context) {
super.onAttach(context);
// fragment新建后给callback赋值
if (context instanceof SampleCallback) {
callback = (SampleCallback) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement SampleCallback");
}
}
@Override
public void onDetach() {
super.onDetach();
callback = null;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.sample, container, false);
// 添加按钮点击事件
view.findViewById(R.id.actionButton).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
callback.onButtonClicked(); // 调用callback
}
});
return view;
}
}三:在Activity界面实现SampleCallback接口,并实现onButtonClicked方法,代码如下:
public final class SampleActivity extends Activity implements SampleCallback {
// ... Skipped code with settings content view and presenting the fragment
@Override
public void onButtonClicked() {
// Invoked when fragment's button has been clicked
}
}这种通过liferecycle生命周期来回调接口的方式,也是和通过setter方法或者构造方法回调事件是一样普遍的,所以作为Android开发人员,也必须要掌握。