0

私は4つのフラグメントを保持するViewPagerを持っています。私が下のナビゲーションバーをクリックして、フラグメント1からフラグメント3またはフラグメント4に切り替えると、フラグメントの間に常に断片的な時間が表示されます。振る舞いは、フラグメント2と3を渡してフラグメント4に到達しなければならないようなものです。これは正常ですか?もしそうなら、アニメーションの間にこれを無効にする方法はありますか?フラグメント間を表示しないViewPagerスイッチ

/** 
* 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アダプタ:

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(); 
} 

おかげ

4つの断片を保持している私の家活性のコードは次のようなものです!

答えて

1

あなたは第二ブール値が項目にスクロールしないViewPagerを伝えViewPager#setCurrentItem(position, false);

使用しますが、すぐにそれを表示することができます。

here

+0

文書を確認してください。どうもありがとう。 – user8795747

関連する問題