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


}*


智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告