主要内容:要实现activity和fragment的通讯。(回调)
今天主要遇到的问题就是点击activity中的控件,在fragment中实现操作。
即如图所示:图中的发送是activity中的,而心情签到和心情语录是两个fragment。现在的需求是点击发送将心情签到的内容发送到心情语录中去。
先上代码:
1.先定义一个接口
public interface OnActivityInteractionListener {
void onActivityInteraction();
}
2.设置监听方法
public void setSendListener(OnActivityInteractionListener onActivityInteractionListener) {
this.onActivityInteractionListener = onActivityInteractionListener;
}
3.在发送的点击事件中调用监听的方法
sign_send_info.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//第三步:在点击事件调用监听接口的方法
if (onActivityInteractionListener != null) {
onActivityInteractionListener.onActivityInteraction();
} else {
Toast.makeText(SignActivity.this, "onActivityInteractionListener is null", Toast.LENGTH_SHORT).show();
}
}
});
以上都是在activity中做的操作。
4.在fragment中实现这个接口,并重写方法和注册监听。
(1).实现
public class SignNewFragment extends BaseFragment implements SignActivity.OnActivityInteractionListener
(2).重写方法(在方法中写出你想要进行的操作)
@Override
public void onActivityInteraction() {
onCreatData();
}
(3).注册监听
((SignActivity) getActivity()).setSendListener(this);
这样就完成了监听回调。
最后写出完成回调的步骤:
1.确认监听和被监听者(即需要点击操作的是被监听者,在这里即点击发送为被监听者),在被监听者中进行以下的操作。
2.在被监听者中定义接口,设置相关的监听,并在点击事件调用监听接口的方法。
3.在监听者中实现被监听者的接口,并重写方法和注册监听。
这样回调就完成了。