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