# 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);
}
~~~