我的ViewPager
内有一个fragment_main
(MainActivity
)的片段。
在我的MainActivity
我有一个BottomNavigationView
。当我点击fragment_main
的项目时,我想设置ViewPager
的{{1}}'页面。
我怎么能这样做?
BottomNavigationView
有所了解,并设置了项目:
ViewPager
有效!
但问题是:如果我 bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
MainFragment mainFragment = null;
switch (item.getItemId()){
case R.id.nav_item_feed:
mainFragment =(MainFragment)getSupportFragmentManager().findFragmentById(R.id.main_frame);
mainFragment.viewPager.setCurrentItem(0);
break;
}
}
上有另一个片段怎么办?
当然,我可以先用fragment_main替换它,但这需要时间和
MainActivity
返回null。
那么设置片段的viewpager页面的最佳方式是什么?内部父活动?
答案 0 :(得分:0)
使用 FrameLayout 代替ViewPager for Fragments
在bottomNavigationView点击监听器中的case语句中使用以下行。
toFrag(ProductsFrag.newInstance(FragInstance.PRODUCTS));
public void toFrag(Fragment toFrag){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getSupportFragmentManager().beginTransaction().replace(R.id.content, toFrag).commitAllowingStateLoss();
}
}, 200);
}
这里R.id.conent是 FrameLayout id