Fragment+viewpager+Fragment 嵌套 第二次進入該fragment不顯示數據

 Fragment+viewpager+Fragment 嵌套 第二次進入該fragment不顯示數據
2014-07-09 11:49:45

親測成功解決方案:

View mView ;

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {
                
                if(mView != null){
                        ViewGroup parent = (ViewGroup) mView.getParent();  
                if (parent != null) {  
                    parent.removeView(mView);  
                }   
                        return mView;
                }
        mView=

inflater.inflate(R.layout.XXXXX, container,

                    false) ;

。。。。。。。 
}


來源: <http://www.eoeandroid.com/thread-315619-1-1.html>

 


網友提供的方案一:


http://www.cnblogs.com/dancefire/archive/2013/01/02/why-notifyDataSetChanged-does-not-work.html

@Override

public Fragment getItem(int position) {

    MyFragment f = new MyFragment();

    return f;

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

    MyFragment f = (MyFragment) super.instantiateItem(container, position);

    String title = mList.get(position);

    f.setTitle(title);

    return f;

}

@Override

public int getItemPosition(Object object) {

    return PagerAdapter.POSITION_NONE;

}


網友提供的方案二 :


我的是一個fragment界面裏面嵌套了一個viewpager,viewpager裏面放的兩個fragment的適配器,第一次執行時都正常顯示,第二次執行時viewpager顯示數據爲空?

解決方案:

調試打印logo顯示viewpager適配器的getItem()方法沒有執行,原因是fragment裏面又嵌套了fragment,所以在創建viewpager的適配器的時候傳參爲getChildFragmentManager()而不是getFragmentManager(),因爲如果傳參爲getFragmentManager()則表示將父Fragment的FragmentManager傳給了子Fragment,所以無法顯示數據

來源: <http://www.th7.cn/Program/Android/201406/218498.shtml>


此方案出現 no Activity 等異常。應該是我使用的條件和樓主不一致所以記錄下方便借鑑

解決no Activity 異常方案  但之後又出現了java.lang.IllegalStateException: Activity has been destroyed;


public void onDetach() { 
super.onDetach(); 
try { 
//參數是固定寫法 
Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager"); 
childFragmentManager.setAccessible(true); 
childFragmentManager.set(this, null); 
} catch (NoSuchFieldException e) { 
throw new RuntimeException(e); 
} catch (IllegalAccessException e) { 
throw new RuntimeException(e); 


}*


發佈了6 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章