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操作進行異常情況的處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM