Fragment 间的通信

Fragment 间的通信 方式


有三种

一。通过 Application  应用的全局变量

二。通过 Activity 进行 方法的调用 类似于回调(CallBack)  ,可以用于更新其他的 fragment

三 。可以通过广播的形式 来进行通信 也可以更新其他的fragment 

四。通过切换fragment 的时候 带参数 或者对象过去 。

   类似代码

    MyFavoriteFragment mcf = new MyFavoriteFragment();
            Bundle args = new Bundle();
            args.putInt("page", 0);
            mcf.setArguments(args);
            addFragment(mcf, true);



第三种方式 需要注意 广播的生命周期 这个周期是和所在的activity 的销毁 在一起的 ,生命周期过长。


如果是 只是简单的变量,来进行简单的判断,于控制界面 ,可以用第一种方式



在项目里面有这样一个需求  在设置里面 设置主页面显示的内容  如果设置产生变化的时候 就更新主界面

 

在设置界面的fragment 里面 定义一个 接口 (就是一个回调函数)

      public interface updateList{
        public void updateListContent(String ids);
     }

在activity 里面实现这个界面  然后重写 要实现的方法 

    @Override
    public void updateListContent(String ids) {
        HomeFragment homeFragment =(HomeFragment)
                    getSupportFragmentManager().findFragmentById(R.id.homefragment);
//        
        if(homeFragment!=null){
            homeFragment.RefreshList();
        }else{
//            getSupportFragmentManager().removeOnBackStackChangedListener);
            popAllFragment(mFragmentManager);
            replaceFragment(new HomeFragment(), false);
//            addFragment(f, addToBackStack)
        }
    }




因为2个fragment 是在同一个activity 里面所以 findFragmentById ()找不到需求的fragment 


 只能手动切换到 主界面的fragemnt 












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值