ViewPager不在onResume上显示内容

时间:2018-07-28 07:17:19

标签: android android-viewpager fragmentstatepageradapter

我正在使用FragmentStatePagerAdapter for 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);
    }
}

0 个答案:

没有答案