在第一个fragment中定义广播
1.首先,定义LocalBroadManager;
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span>private LocalBroadcastManager localBroadcastManager;</span>
<span style="font-family:Arial, Helvetica, sans-serif;">2.在onAttach方法中注册广播接收者</span>
<span style="font-family:Arial, Helvetica, sans-serif;"></span><pre name="code" class="java"> localBroadcastManager = LocalBroadcastManager.getInstance(getActivity());
myReceiver = new MyReceiver();
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("com.fragment.FragmentItems");
localBroadcastManager.registerReceiver(myReceiver, intentFilter);
//这里如果写在onCreateView中会出现。在第一个fragment中第一次点击发送一个数据过来,第二次点击发送两个数据过来,第三次点击发送三个相同的数据过来。
//要注意fragment的生命周期。---亲测
<span style="font-family:Arial, Helvetica, sans-serif;">3.写一个MyReceiver类继承BroadcastReceiver</span>
<span style="font-family:Arial, Helvetica, sans-serif;"> </span><pre name="code" class="java"> public class MyReceiver extends BroadcastReceiver implements OnDownComplete{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.fragment.FragmentItems")) {
stringExtra = intent.getStringExtra("s");
}
}
}
4.在onDestory()方法中注销掉广播
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
localBroadcastManager.unregisterReceiver(myReceiver);
}
第二个发送数据的fragment
1.定义LocalBroadManager;
private LocalBroadcastManager localBroadcastManager;
2.在需要发送数据的地方sendBroadManager;
intent.putExtra("songlist", s);
localBroadcastManager.sendBroadcast(intent);