В настоящее время мое приложение имеет меню навигации снизу, и каждый элемент в этом меню имеет свое меню вкладок.
У меня есть кнопка внутри одной из моих вкладок, и я хочу, чтобы, когда пользователь нажимает кнопку, отображался новый фрагмент. Но, поскольку это меню вкладок, фрагменты отображаются через ViewPager, и я не знаю, как открыть новый фрагмент таким образом. Я попытался заменить ViewPager, но у меня ничего не вышло, просто ничего не появляется, когда я нажимаю кнопку.
- последовательность фрагментов
1-й - ProfessionalFragment (это фрагмент, открытый при нажатии на нижнее меню навигации. Именно здесь я создаю экземпляр ViewPager)
2nd - EducationFragment (Этот фрагмент является Вкладка меню вкладки ProfessionalFragment. Это фрагмент с кнопкой для открытия нового фрагмента)
3-й - BasicCoursesFragment (это фрагмент, который я хочу открыть, нажав на кнопку в EducationFragment)
Ниже приведены коды:
ProfessionalFragment
public class ProfessionalFragment extends Fragment {
private ProfessionalViewModel dashboardViewModel;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
dashboardViewModel =
ViewModelProviders.of(this).get(ProfessionalViewModel.class);
View root = inflater.inflate(R.layout.fragment_professional, container, false);
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(getActivity(), getChildFragmentManager());
ViewPager viewPager = root.findViewById(R.id.viewPagerProfessional);
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = root.findViewById(R.id.tabsProfessional);
tabs.setupWithViewPager(viewPager);
return root;
}
}
class SectionsPagerAdapter extends FragmentPagerAdapter {
@StringRes
private static final int[] TAB_TITLES = new int[]{R.string.title_work, R.string.title_education};
private final Context mContext;
public SectionsPagerAdapter(Context context, FragmentManager fm) {
super(fm);
mContext = context;
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new WorkFragment();
break;
case 1:
fragment = new EducationFragment();
break;
}
return fragment;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mContext.getResources().getString(TAB_TITLES[position]);
}
@Override
public int getCount() {
return 2;
}
}
EducationFragment
public class EducationFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_education, container, false);
Button basicCourses = root.findViewById(R.id.button_basic_courses);
basicCourses.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
BasicCoursesFragment basicCoursesFragment = new BasicCoursesFragment();
ft.replace(R.id.viewPagerProfessional, basicCoursesFragment);
ft.addToBackStack(null);
ft.commit();
}
});
return root;
}
}
Буду благодарен за помощь.