[英]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;
}
};
}
No error shown but the fragment isn't opening未显示错误,但片段未打开
add container framelayout to your parent fragment then on every click set fragment using this:将容器框架布局添加到您的父片段,然后在每个单击集片段上使用:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.parent_fragment_container, new ParentFragment());
ft.commit();
your code will look like:您的代码将如下所示:
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.