[英]Set child fragment's ViewPager page from Activity
我的MainActivity
有一個帶有ViewPager
( fragment_main
)的fragment_main
。 在我的MainActivity
我有一個BottomNavigationView
。 單擊BottomNavigationView
的項目時,我想設置fragment_main
的ViewPager
頁面。 我怎樣才能做到這一點?
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.