# Android自助餐之Fragment与Activity通信
- [Android自助餐之Fragment与Activity通信](#)
- [一 Fragment通知所在Activity](#)
- [在Fragment定义接口及接口对象](#)
- [Fragment在onAttach时检测所在Activity时候实现该接口](#)
- [在Fragment中需要通知Activity的地方调用](#)
- [二 Fragment通知者通知另一个Fragment被通知者](#)
### 一 Fragment通知所在Activity
#### 1.在`Fragment`定义接口及接口对象
~~~
public interface OnXXEventListener {
public void onXXEvent(Object arg);
}
OnXXEventListener mListener;
~~~
#### 2.`Fragment`在`onAttach`时检测所在`Activity`时候实现该接口
~~~
public void onAttach(Activity activity) {
super.onAttach(activity);
// 检查Fragment所在Activity是否实现了上面定义的借口,若无则抛出异常
try {
mListener = (OnXXEventListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " didn't implement OnXXEventListener");
}
}
~~~
#### 3.在`Fragment`中需要通知`Activity`的地方调用
~~~
mListener.onArticleSelected(object);
~~~
### 二 Fragment(通知者)通知另一个Fragment(被通知者)。
需要通知者`Fragment`通知所在`Activity`来通知被通知者`Fragment`。因此前三步同上所述实现通知者`Fragment`通知所在`Activity`,第四步则是在`Activity`实现接口的方法中通知被通知者`Fragment`。
~~~
public void onXXEvent(Object arg) {
// 调用被通知者Fragmetn的公有方法来传递消息
fragment.publicMethod(arg);
}
~~~