ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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); } ~~~