繁体   English   中英

如何从底部导航栏打开本身在片段中的片段?

[英]How to open a fragment from bottom navigation bar which is itself in a fragment?

public class HomeFragment extends Fragment {

    BottomNavigationView bottomNavigationView;
FragmentManager manager = getFragmentManager() ;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_home,container,false);
    }

 @Override
    public void onStart() {
        super.onStart();
        bottomNavigationView = bottomNavigationView.findViewById(R.id.bottom_navigation);
        bottomNavigationView.setOnNavigationItemSelectedListener(navListener);
    }

    private BottomNavigationView.OnNavigationItemSelectedListener navListener=
            new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                    Fragment selectedFragment = null;
                    switch (menuItem.getItemId()){
                        case R.id.nav_home1 :
                            selectedFragment = new Home1Fragment();
                            break;
                        case R.id.nav_favourites :
                            selectedFragment = new FavouriteFragment();
                            break;
                        case R.id.nav_search:
                            selectedFragment = new SearchFragment();
                            break;
                    }
                    manager.beginTransaction().replace(R.id.fragment_container,selectedFragment).commit();
                    return true;
                }
            };

}

未显示错误,但片段未打开

将容器框架布局添加到您的父片段,然后在每个单击集片段上使用:

 FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.parent_fragment_container, new ParentFragment());
    ft.commit();

您的代码将如下所示:

   public class HomeFragment extends Fragment {

        BottomNavigationView bottomNavigationView;
    FragmentManager manager = getFragmentManager() ;

        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            return inflater.inflate(R.layout.fragment_home,container,false);
        }
    private void setFragment(Fragment fragment){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.parent_fragment_container,fragment);
        ft.commit();
}
     @Override
        public void onStart() {
            super.onStart();
            bottomNavigationView = bottomNavigationView.findViewById(R.id.bottom_navigation);
            bottomNavigationView.setOnNavigationItemSelectedListener(navListener);
        }

        private BottomNavigationView.OnNavigationItemSelectedListener navListener=
                new BottomNavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                        Fragment selectedFragment = null;
                        switch (menuItem.getItemId()){
                            case R.id.nav_home1 :
                                selectedFragment = new Home1Fragment();
                                 setFragment(selectedFragment);
                                break;
                            case R.id.nav_favourites :
                                selectedFragment = new FavouriteFragment();
                                break;
                            case R.id.nav_search:
                                selectedFragment = new SearchFragment();
                                break;
                        }
                        manager.beginTransaction().replace(R.id.fragment_container,selectedFragment).commit();
                        return true;
                    }
                };

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM