簡體   English   中英

從活動設置子片段的ViewPager頁面

[英]Set child fragment's ViewPager page from Activity

我的MainActivity有一個帶有ViewPagerfragment_main )的fragment_main 在我的MainActivity我有一個BottomNavigationView 單擊BottomNavigationView的項目時,我想設置fragment_mainViewPager頁面。 我怎樣才能做到這一點?

PS:我已經使它工作了,但我認為我沒有用好方法,我在片段中的ViewPager有了一個參考,並設置了Item:

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

有用! 但是問題是:如果我的MainActivity上還有另一個片段怎么辦? 當然,我可以先用fragment_main替​​換它,但要花些時間,並且mainFragment =(MainFragment)getSupportFragmentManager().findFragmentById(R.id.main_frame)返回null。

那么,設置片段的viewpager頁面,在父活動內部的最佳方法是什么?

使用FrameLayout代替ViewPager生成片段

在bottomNavigationView click偵聽器內的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM