前提条件:Evenbus,必须注册,并且在发送页面和接收页面都得有公共的方法,要实现的效果

代码 比较简单,这里贴出一些关键代码(至于安装可以使用Jar和依赖来进行安装),我这里页面销毁没有注销,大家使用的时候注销一下
Fragment_one.java
public class Fragment_one extends Fragment {
Button mButton;
int index=0;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = (View)inflater.inflate(R.layout.fragment_one,null);
mButton = (Button)view.findViewById(R.id.btn);
//关键代码,必须注册
EventBus.getDefault().register(this);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
index++;
//发送广播
EventBus.getDefault().post(new EvenbusBean(index));
}
});
}
//公共方法
@Subscribe(threadMode = ThreadMode.MAIN)
public void Changed(EvenbusBean event){ }
}
EvenbusBean.java
public class EvenbusBean {
public int index;
public EvenbusBean(int index) {
this.index = index;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
在Fragment_two中进行接收
public class Fragment_two extends Fragment {
private TextView tv;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//必须注册
EventBus.getDefault().register(this);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//return super.onCreateView(inflater, container, savedInstanceState);
View view = (View)inflater.inflate(R.layout.fragment_two,null);
tv = (TextView)view.findViewById(R.id.tv);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
//接收Evebbus
@Subscribe(threadMode = ThreadMode.MAIN)
public void change(EvenbusBean event){
int a = event.getIndex();
Log.i("520it","a1="+a);
tv.setText("点击次数="+a);
}
}
本文介绍如何使用EventBus实现在Android应用的Fragment间进行高效的数据通信。通过注册和发送EventBus事件,不同Fragment可以监听并响应这些事件,实现跨组件的数据传递。文章提供了具体的代码示例,包括如何在Fragment中注册、发送和接收EventBus事件。


被折叠的 条评论
为什么被折叠?



