1. activity和fragment之间的通信
1. 接口回调。
2. 通过设置fragment的argument。
3. 通过getActivity()调用activity的公共方法。
4. 通过Intent启动activity 附加信息。
2. fragment之间的通信
1. 通过寄宿的activity获取另一个fragment的实例并调用其方法。
2. 接口回调
3. 使用广播
Intent intent = new Intent("showPro"); intent.putExtra("name", name); LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent); |
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getActivity()); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("showPro"); BroadcastReceiver br = new BroadcastReceiver() { @Overridepublic void onReceive(Context context, Intent intent) { String key = intent.getStringExtra("name"); }; localBroadcastManager.registerReceiver(br,intentFilter); |
EventBus介绍
1. EventBus是一个Android端优化的发布和订阅事件消息总线,解决组件之间,组件与后台线程之间的通信,可以代替Intent Handler Broadcast 等在Fragment和activity之间传递消息。
implementation 'org.greenrobot:eventbus:3.1.1'