Мне сложно найти хороший пример того, как пролистывать fragments
с помощью bottom navigatiom bar
. Поскольку FragmentStatePagerAdapter устарел, а новый ViewPager2 теперь рекомендуется вместо старого ViewPager, который я хочу использовать ViewPager2 и FragmentStateAdapter вместо этого в моем коде. Я нашел пример того, как объединить BottomNavigationBar и ViewPager здесь, и я хочу сделать что-то подобное. Мой код во многом похож на тот, что в примере, с той лишь разницей, что мой код находится во фрагменте, а не в действии. Вот изображение того, как выглядит мой экран FrontendFragment. Я могу переключаться между представлениями с помощью нижней панели навигации, но я также хочу иметь возможность перемещаться между представлениями. Может ли кто-нибудь помочь мне или хотя бы направить меня на правильный путь? Вот мой код:
Класс FragmentPagerAdapter:
public class FragmentPagerAdapter extends FragmentStateAdapter {
private static final int mFragmentCount = 5;
public FragmentPagerAdapter(@NonNull Fragment fragment) {
super(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position){
case 0:
return new HomeFragment();
case 1:
return new SearchFragment();
case 2:
return new AddFragment();
case 3:
return new MessageFragment();
case 4:
return new ProfileFragment();
}
return null;
}
@Override
public int getItemCount() {
return mFragmentCount;
}
}
Класс FrontendFragment:
public class FrontendFragment extends Fragment implements BottomNavigationView.OnNavigationItemSelectedListener{
private BottomNavigationView mBottomNavigationView;
private ViewPager2 mViewPager2;
private FragmentPagerAdapter mFragmentPagerAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_frontend, container, false);
loadFragment(new HomeFragment());
mBottomNavigationView = v.findViewById(R.id.bottomNavigationBar);
mBottomNavigationView.setOnNavigationItemSelectedListener(this);
return v;
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.home_icon:
selectedFragment = new HomeFragment();
break;
case R.id.search_icon:
selectedFragment = new SearchFragment();
break;
case R.id.add_icon:
selectedFragment = new AddFragment();
break;
case R.id.message_icon:
selectedFragment = new MessageFragment();
break;
case R.id.profile_icon:
selectedFragment = new ProfileFragment();
break;
}
return loadFragment(selectedFragment);
}
private boolean loadFragment(Fragment selectedFragment) {
if(selectedFragment != null){
MainActivity.sFm.beginTransaction().replace(R.id.relLayoutMiddle, selectedFragment).commit();
return true;
}
return false;
}
}
Заранее спасибо!