从活动

时间:2017-12-28 10:59:51

标签: android android-fragments android-activity android-viewpager

我的ViewPager内有一个fragment_mainMainActivity)的片段。 在我的MainActivity我有一个BottomNavigationView。当我点击fragment_main的项目时,我想设置ViewPager的{​​{1}}'页面。 我怎么能这样做?

PS:我已经开始工作,但我认为我没有用过一个好方法。我对片段中的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页面的最佳方式是什么?内部父活动?

1 个答案:

答案 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