zoukankan      html  css  js  c++  java
  • activity 嵌套一级fragment,一级fragment嵌套二级fragment,在一级fragment中刷新二级fragment中的UI

      今天遇到挺纠结的问题,由于产品设计的问题,技术上涉及到activity 嵌套一级fragment,一级fragment嵌套二级fragment,在一级fragment中刷新二级fragment中的UI。
      
      其中一级fragment中有顶部搜索栏,搜索栏下面有viewpager+fragment的布局,搜索栏输入内容后要更新子当前页面的fragment的搜索方法,并刷新UI.
      
      adapter:

    private class OrderManagerFragmentPagerAdapter extends FragmentPagerAdapter {
            public OrderManagerFragmentPagerAdapter(FragmentManager fm) {
                super(fm);
            }
    
    
            @Override public Fragment getItem(int position) {
                switch (position) {
                    case 0:
                        return NewOrderFragment.newInstance();
                    case 1:
                        return FollowingFragment.newInstance();
                    case 2:
                        return DesperatelyFollowingFragment.newInstance();
                    case 3:
                        return RobbedFragment.newInstance();
                    case 4:
                        return TransferFragment.newInstance();
                    case 5:
                        return ClinchDealFragment.newInstance();
                    case 6:
                        return LostFragment.newInstance();
                    case 7:
                        return NoEffectFragment.newInstance();
                    default:
                        return null;
                }
            }
    
    
            @Override public CharSequence getPageTitle(int position) {
                return TITLES[position % TITLES.length];
            }
    
    
            @Override public int getCount() {
                return TITLES.length;
            }
        }

      调用adapter的getitem()并调用子当前页面的fragment的搜索方法,并刷新UI,但是出错,子fragment中UI组件为null,adapter为null;
      
      正确调用姿势为:

     int    position   = pager.getCurrentItem();
            String searchWord = searchtv.getSearchWord();
            //两层fragment嵌套,调用指定fragment的刷新操作,fuck,这方法找了好几天
            Fragment fragment = getChildFragmentManager().getFragments().get(position);

    获取当前显示的子fragment,然后调用子fragment的搜索方法,并刷新UI.,完美实现。


      2016年2月26日21:23:21更
      
      由于这里获取子fragment,需要进行强制类型转换,因此有可能出现ClassCastException,所以需要在switch语句外面进行try catch操作进行异常情况的处理。

  • 相关阅读:
    手动启动log4j|nginx实现http https共存
    java.util.zip.ZipException: invalid LOC header (bad signature)
    Bean property 'transactionManagerBeanName' is not writable or has an invalid set
    rabbitmq启动异常table_attributes_mismatch
    nexus私服快速update index方法
    Spring boot ,dubbo整合异常
    如何编写无须人工干预的shell脚本
    Jenkins构建部署jar/war后,服务无法在后台持续运行的解决方案
    移动端CSS通用样式
    Spring bean的几种装配方式
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/5212095.html
Copyright © 2011-2022 走看看