android - 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);
}
}
解决方案
推荐阅读
- django - 在仪表板中使用 django-tables2
- reactjs - 如何使用 React Lazy + Fallback + Children 组件创建测试?
- r - 数据框中的显式因子 NA
- c++ - ITC是否比同类IPC快?
- c - C中的反向冒泡排序算法仅使用while循环
- python-3.x - 如何用 Turtle(python) 缓慢移动对象?
- puppeteer - 当我打开新标签页或窗口时,如何保持 Puppeter 会话?
- reactjs - 如何从 API 数组中获取第一个元素
- javascript - Vue js 不改变路由——vue 路由不起作用
- export - 审核来自 Dynamics 365 的导出