fragment viewpager和tablayout相互嵌套内容不显示和组件不显示问题

    xiaoxiao2021-03-25  152

    1.在ViewPagerAdapter中 fragment是如何查找和关联的呢,:点进super(fragmentManager) 看instantiateItem方法看如图:

    getItemId其实就是他的位置,makeFragmentName返回的是containerID和position组合的字符窜,方法如下:

    而mFragmentManager不是getFragmentManger就是getSu.........,通过findFragmentBytag方法来查找 为null就通过getItem(position)方法得到并添加fragement ,name作为tag标记下次直接使用...并返回fragment作为键

    显示方法如下:

    @Override public void finishUpdate(ViewGroup container) { if (mCurTransaction != null) { mCurTransaction.commitNowAllowingStateLoss(); mCurTransaction = null; } }

    ps官文:Called when the a change in the shown pages has been completed. At this point you must ensure that all of the pages have actually been added or removed from the container as appropriate.

    问题 1.viewGroupId是什么: 结果如下

    是viewPager的id...值如此的相近:并且还是通过一个对象fragmentManager来保存是不是发生重复的概率很高:如果重复了都没有add,直接attach能有效果吗

    解决方法如下:使用getchildFragmentManager传入适配器:

    如果加入tablayout fragment不显示 可以加入setAdapter上一行语句或者重写:

    ps:这样重写会出现短层,可以用空实现.

    2.fragment+tablayout+viewpager+多个fragment内容不显示

    在viewPageradapter传递数据,让当前的fragment的views填充数据如下:

    先创建对象Fragment储存在list

    for(int i=0;i<this.dataBeen.size();i++){ newsPager.add(new NewsDetailPagerFragment()); }

    执行顺序如下:

    initView bindata是基类里面方法 分别在OncreateView onActivityCreated方法里调用...创建对象并不能执行initView bindata方法只有关联activity才执行

    所以init()可以初始化数据,不能用view来bingdata数据,因为initView还没有执行

    ps:内容不显示要么就是传错了FragmentManager或者执行顺序错误很笨.记录一下,不对地方请指教...

    

    转载请注明原文地址: https://ju.6miu.com/read-1743.html

    最新回复(0)