H07000223 / FlycoTabLayout

An Android TabLayout Lib
MIT License
11.05k stars 2.42k forks source link

和Navigation搭配 rootFragment内放改控件,会导致内容不显示的问题 #546

Open Lw1244204021 opened 2 years ago

Lw1244204021 commented 2 years ago

这是绑定Navigation的rootfragment `class CommunityRootFragment : BaseViewFragment() {

private val mFragments = ArrayList<Fragment>()
private val mTitles = arrayOf(
    "发现", "社区"
)

override fun getSubLayoutId(): Int = R.layout.fragment_community_root

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    initView()
}

private fun initView() {
    mFragments.add(CommunityFindFragment())
    mFragments.add(CommunityCommutFragment())
    community_root_pager!!.offscreenPageLimit = mFragments.size
    community_root_pager.adapter = MyPagerAdapter(parentFragmentManager, mTitles, mFragments)
    community_slidingTabLayout.setViewPager(community_root_pager)
}

}`

Lw1244204021 commented 2 years ago

好几天的问题,刚刚探索了一下。10分钟找到问题,但是具体的没有去看源码,没了解为啥会这样。解决方案: 将adapter 中的fragmentmanager 设置成childFragmentManager即可。 community_root_pager.adapter = MyPagerAdapter(childFragmentManager, mTitles, mFragments)

`public class MyPagerAdapter extends FragmentPagerAdapter {

private String[] mTitles;
private ArrayList<Fragment> mFragments;

public MyPagerAdapter(FragmentManager fm, String[] titles, ArrayList<Fragment> fragments) {
    super(fm);
    this.mTitles = titles;
    this.mFragments = fragments;
}

@Override
public int getCount() {
    return mFragments.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return mTitles[position];
}

@Override
public Fragment getItem(int position) {
    return mFragments.get(position);
}

} `