با سلام. در BottomNavigationView با توجه به اینکه فرگمنگها را replace هم میکنم باز فرگمنت home را همیشه نشان میدهد . چون در خاصیت name در frame موجود در mainActivity قرار گرفته است و فرگمنت پیش فرض است. و باز زدن روی دکمه home باز دوباره نشان میدهد. چرا؟ ( در فایلهای ارسالی کل پوشه src را قرار دادم . از اندروید استادیو 3.5 استفاده کردم. لطفا برای اجرای اپلیکیشن نام کاربری را فعلا 1 رمز عبور را 1234 بگذارید.)
البته روی متدهایی که استاد استفاده کردند خط کشیده شده بود . بنابر این از متدهای زیر استفاده شده است.
mainBottomNavigation.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction();
switch (item.getItemId()){
case R.id.homeItem:
FragmentTransaction fragmentTransaction4=getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.nav_host_container,new HomeFragment());
// fragmentTransaction.addToBackStack("HomeFragment");
fragmentTransaction.commit();
break;
case R.id.profileItem:
FragmentTransaction fragmentTransaction2=getSupportFragmentManager().beginTransaction();
fragmentTransaction2.replace(R.id.nav_host_container,new ProfileFragment());
//fragmentTransaction.addToBackStack("ProfileFragment");
fragmentTransaction2.commit();
break;
case R.id.cartItem:
// FragmentTransaction fragmentTransaction2=getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.nav_host_container,new CartFragment());
//fragmentTransaction.addToBackStack("ProfileFragment");
fragmentTransaction.commit();
break;
case R.id.categoryItem:
// FragmentTransaction fragmentTransaction3=getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.nav_host_container,new CategoryFragment());
//fragmentTransaction.addToBackStack("ProfileFragment");
fragmentTransaction.commit();
break;
}
return true;
}
});
mainBottomNavigation.setOnItemReselectedListener(new NavigationBarView.OnItemReselectedListener() {
@Override
public void onNavigationItemReselected(@NonNull MenuItem item) {
}
});