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); 
    }

     

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

  • 相关阅读:
    Java中的静态方法
    捕获异常代码
    重载与重写的区别
    继承代码
    Android Studio 快捷键一览
    android两种基本联网方式与一种第三方开源项目的使用
    Android Studio导入github下载的project和module
    SlidingMenu 侧滑菜单的用法
    显示图片的(自定义)吐司Toast
    用volley在Genymotion上获取网页源码
  • 原文地址:https://www.cnblogs.com/IT-Goddess/p/7867348.html
Copyright © 2011-2022 走看看