Ich habe einen ViewPager, der 4 Fragmente enthält. Wenn ich von fragment1 zu fragment3 oder fragment4 wechsle, indem ich auf meine untere Navigationsleiste klicke, werden immer die Zwischenfragmente für einen Bruchteil der Zeit angezeigt. Das Verhalten ist so, als müsste es die Fragmente 2 und 3 passieren, um zu Fragment 4 zu gelangen. Ist das normal? Wenn ja, gibt es eine Möglichkeit, dies zwischen den Animationen zu deaktivieren?ViewPager wechseln, ohne die Zwischenfragmente zu zeigen
-Code in meiner Heimat Aktivität, die die vier Fragmente hält sind wie folgt aus:
/**
* view pager.
*/
public void setupViewPager(ViewPager viewPager){
Log.d(TAG, "setupViewPager: setting up viewPager.");
SectionsStatePagerAdapter adapter = new SectionsStatePagerAdapter(getSupportFragmentManager());
adapter.addFragment(new HomeFragment(), "HomeFragment");
adapter.addFragment(new HashtagFragment(), "HashtagFragment");
adapter.addFragment(new ChattingFragment(), "ChattingFragment");
adapter.addFragment(new SettingFragment(), "SettingFragment");
viewPager.setAdapter(adapter);
}
public void setViewPager(int fragmentNumber){
mViewPager.setCurrentItem(fragmentNumber);
}
public void enableViewPagerSwitch(){
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(bottomNavigationView.getMenu().getItem(position).isChecked()){
bottomNavigationView.getMenu().getItem(position).setChecked(false);
Log.d(TAG, "onPageScrolled: position is " + position);
}
}
@Override
public void onPageSelected(int position) {
bottomNavigationView.getMenu().getItem(position).setChecked(true);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
/**
* navigation bar.
*/
private void setupBottomNavigationView(){
Log.d(TAG, "setupBottomNavigationView: setting up Bottom navigation bar.");
BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationView);
Menu menu = bottomNavigationView.getMenu();
MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
menuItem.setChecked(true);
}
private void enableNavigation(){
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.ic_home:
setViewPager(0);
break;
case R.id.ic_hashtag:
setViewPager(1);
break;
case R.id.ic_chat:
setViewPager(2);
break;
case R.id.ic_setting:
setViewPager(3);
break;
}
return false;
}
});
}
ViewPager Adapter:
public class SectionsStatePagerAdapter extends FragmentStatePagerAdapter{
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public SectionsStatePagerAdapter(FragmentManager fm) {
super(fm);
}
public void addFragment(Fragment fragment, String title){
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
Dank!
es funktioniert! Danke vielmals. – user8795747