首页 > 解决方案 > ViewPager 不显示内容 onResume

问题描述

我正在将 FragmentStatePagerAdapter 用于 TabLayout,ViewPager 将显示 RecyclerView,当我单击列表中的一个项目并单击返回上一页时,它向我显示了一个带有 TabLayout 且没有 RecyclerView 的空白页面。这是我的适配器代码:

public class MyViewPagerAdapter extends FragmentStatePagerAdapter {

    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public MyViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

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

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

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

这是我处理 ViewPager 和 TabLayout 的片段:

public class InternetFragment extends Fragment {

    private View rootView;
    private TabLayout tabLayout;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_internet_package, container, false);

        initUI();

        return rootView;
    }

    private void initUI() {
        ViewPager viewPager = rootView.findViewById(R.id.viewpager);
        tabLayout = rootView.findViewById(R.id.tabs);

        setupViewPager(viewPager);
        tabLayout.setupWithViewPager(viewPager);

        for (int i = 0; i < tabLayout.getTabCount(); i++) {
            TextView txtTabTitle = (TextView) LayoutInflater.from(GC.getInstance().getAppContext()).inflate(R.layout.custom_tablayout_cell, null);
            tabLayout.getTabAt(i).setCustomView(txtTabTitle);
            txtTabTitle.setTypeface(GC.font);
        }
    }

    private void setupViewPager(ViewPager viewPager) {
        String IMSI = GC.getInstance().getSimNumber();
        MyViewPagerAdapter pageAdapter = new MyViewPagerAdapter(getActivity().getSupportFragmentManager());

        if (IMSI.startsWith(ClientConstant.IMSI_RIGHTEL) || IMSI.startsWith(ClientConstant.IMSI_TALIA)) {
            tabLayout.setVisibility(View.GONE);
            pageAdapter.addFragment(new InternetOnlinePackageFragment(), "");
        } else {
            pageAdapter.addFragment(new InternetUSSDPackageFragment(), getString(R.string.package_ussd));
            pageAdapter.addFragment(new InternetOnlinePackageFragment(), getString(R.string.package_online));
        }
        viewPager.setAdapter(pageAdapter);

        if (!IMSI.startsWith(ClientConstant.IMSI_RIGHTEL) || !IMSI.startsWith(ClientConstant.IMSI_TALIA))
            viewPager.setCurrentItem(1);
    }
}

标签: androidandroid-viewpagerfragmentstatepageradapter

解决方案


推荐阅读