• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
随—风
博客园    首页    新随笔    联系   管理    订阅  订阅

Fragment 与 Activity 通信

一、老办法,使用监听模式

1.定义监听接口:
public interface TabListener {

    void setTab(JMPTypeEnum jmpTypeEnum);
}

2.Activity 实现监听接口

public class MainActivity implements TabListener {

    @Override
    public void setTab(JMPTypeEnum jmpTypeEnum) {

        if (jmpTypeEnum==JMPTypeEnum.JMP_PANDA_LIVE) {
            
            mRbLovePanda.setChecked(true);
        }
    }
}

3.在 Fragment 中直接使用

public class HomeFragment{

    private TabListener mTabListener;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        mTabListener = (TabListener) context; // 初始监听
    }

// 在需要通知 Activity 的地方调用
mTabListener.setTab(JMPTypeEnum.JMP_PANDA_LIVE);
}

4.在 Fragment 适配器类中使用

public class HomeAdapter extends MyBaseAdapter {

    private TabListener mTabListener;

    public HomeAdapter(Context context, ArrayList<AdapterData> datas) {

        this.mContext = context;
        this.mDatas = datas;
        this.mTabListener = (TabListener) mContext; // 初始监听
    }

// 在需要通知 Activity 的地方调用
mTabListener.setTab(JMPTypeEnum.JMP_PANDA_LIVE);
}

总结:其实 Context 就是 Activity 的父类,因此可以转换成子 Activity,子 Activity 又实现了接口,因此可以调用接口中的方法。

 

posted @ 2019-11-11 16:39  随—风  阅读(292)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3