您的位置:首页 > 移动开发 > Android开发

android Activity与Fragment之间的通信

2015-11-19 15:20 453 查看

一、使用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的相关使用使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: