从新片段返回后,ViewPager不显示片段

时间:2020-08-13 10:45:44

标签: android

我在一个带有2个片段的Fragment(片段A)中有一个viewpager。假设名称为Fragment B和FragmentC。在Fragment B中,用户有不同的选项。一旦用户选择了任何选项,它就会启动一个新的片段,我们可以将其命名为FragmentD。在此阶段,一切运行良好。从片段D返回到包含viewpager的片段时,它不会加载片段B或片段C。我尝试了多种解决方案,但没有任何效果。当我可以调用以下行时,一种解决方案似乎正在起作用:

viewPager = new ViewPager(getChildFragmentManager())

但是问题在于页面加载后立即再次启动FragmentD。只要用户按下“后退”按钮,它就可以像这样继续工作。

以下是我使用的代码:

片段A:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_calendar_main, container, false);
        initViews(view);
        return view;
    }

    private void initViews(View view) {
        TabLayout tabLayout = view.findViewById(R.id.tabLayout);
        final ViewPager viewPager = view.findViewById(R.id.viewPager);

        TabAdapter adapter = new TabAdapter(getFragmentManager());

        adapter.addFragment(new CreateAppointmentTabFragment(), "Create Appointment");
        adapter.addFragment(new ShowCalendarTabFragment(), "Calendar");

        viewPager.setAdapter(adapter);
        tabLayout.setupWithViewPager(viewPager);

    }

适配器:

public class TabAdapter extends FragmentStatePagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public TabAdapter(FragmentManager fm) {
        super(fm);
    }

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

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

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

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

0 个答案:

没有答案