zoukankan      html  css  js  c++  java
  • 使用观察者模式更新Fragment的内容

    最近有个需求,就是在Fragment没有切换的时候(show,hide)更新Fragment显示的内容,想了一会,终于想到可以用观察者模式来解决这个问题的。

    定义一个【被观察者(接口)】:

    public interface ISubject {
    
        void addObserver(PoemFragment obj);
    
        void deleteObserver(PoemFragment obj);
    
        void notifyObserver();
    }

     

    定义一个【观察者(接口)】:

    public interface IObserver {
        void update();
    }

     

    IndexActivityimplements ISubject,然后再IndexActivity中定义个集合保存Fragment:

     

     

    private List fragments = new ArrayList<>();

     

    IndexActivity实现了ISubject的3个方法:

    @Override
        public void addObserver(PoemFragment obj) {
            fragments.add(obj);
        }
    
        @Override
        public void deleteObserver(PoemFragment obj) {
            fragments.remove(obj);
        }
    
        @Override
        public void notifyObserver() {
              for (int i =0;i<fragments.size();i++){
                  fragments.get(i).update();
              }
        }

     

    接下来,让MyFragment implements IObserver,实现update方法,这个方法里面做fragment的更新操作

    indexActivivity中需要更新Fragment的地方,调用 notifyObserver() 就可以了,我在indexActivity中使用:

    if (myFragment.isAdded()){ 
        transaction.show(dynastyFragment); 
        notifyObserver();//通知Fragment更新 
    } else {
         transaction.add(R.id.framelayout,dynastyFragment); 
    }

     

    哈哈哈,大功告成了!!!其实很简单的

  • 相关阅读:
    MAC 使用git时 不自动补全
    MAC 下 安装redis 并配置 php redis 扩展
    PHP日志 LOG4PHP 的配置与使用
    PHP数组 转 对象/对象 转 数组
    将数组打印到txt文件中
    Yii2控制器 返回 json 格式数据
    控制流输出26大小写英文字母
    员工领导部门关系类
    重写父类
    递归(recursion)
  • 原文地址:https://www.cnblogs.com/IT-Goddess/p/7867348.html
Copyright © 2011-2022 走看看