一、使用onAttach方法实现
1、activity----->fragment
activity代码:
private OnMainListener mainListener;
// 绑定接口
@Override
public void onAttachFragment(Fragment fragment) {
try {
mainListener = (OnMainListener)fragment;
} catch (Exception e) {
throw newClassCastException(this.toString() + " must implementOnMainListener");
}
super.onAttachFragment(fragment);
}
// 接口
public interface OnMainListener {
public void onMainAction();
}
onMainAction方法是activity向fragment发出通信的方法,里面可以放参数, 在要发出通信的地方直接调用该方法即可。fragment代码:
public class MyFragment extends Fragment implementsOnMainListener {
……………………
@Override
public voidonMainAction() {
//这里是实现通信的接口
}
2、fragment ---->activity
fragment代码:
private OnFragmentListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentListener) activity;
} catch (ClassCastException e) {
throw newClassCastException(activity.toString() + " must implement OnFragmentListener");
}
}
public interface OnFragmentListener {
public void onFragmentAction(intflag);
}
activity代码: public class MainActivity extends Activity implements OnFragmentListener{
………………
// 实现接口方法
@Override
public voidonFragmentAction(int flag) {
//实现通信的接口
}
}
二、使用handler通信
接收方代码:
public Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg != null) {
switch (msg.what) {
case BaseConstant.SHOW_CHECK_IN:
right_text.setText(getString(R.string.calendar_checkin1));
break;
case BaseConstant.SHOW_CHECK_OUT:
right_text.setText(getString(R.string.calendar_checkout1));
break;
case BaseConstant.SHOW_CHECK_NOTHING:
right_text.setText("");
break;
default:
break;
}
}
}
};
发送方代码:
获得handler实例
MarketDetailActivity activity = (MarketDetailActivity) getActivity();
handler = activity.handler;
handler.sendEmptyMessage(flag);
三、使用BroadcastReceiver通信
这里就不贴代码了,可以参考BraodcastReceiver的相关使用使用。