با سلام. در 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) {
}
});
سلام و احترام
من متوجه سوالتون نشدم ممنون میشم با کد قدم به قدم + اسکرین شات های مربوطه توضیحاتی بدیدتا شما رو بهتر راهنمایی کنم (از اونجایی که پروژه جدای از این سرفصل اموزشی هست تا دید کلی نسبت به کارتون بدست بیارم) .
همچنین کد ها رو ممنون میشم به صورت فرمت مناسب ارسال کنید تا خوانا باشد (راهنمایی : سمت چپ بالا گزینه ای وجود داره که میتونید بر اساس زبان مورد نظرتون کدتون رو فرمت بندی کنید)
این اموزش کوتاه هم براتون قرار میدم امیدوارم کمکتون کنه .(هر چند در ادامه به صورت پروژه محور صحبت شده) لینک
متشکر از دوستانی که وقت گذاشتند. مشکل با قرار دادن Fragment Layout به جای fragment و حذف خاصیت name از XML و مقدار دهی اولیه فرگمنت در mainActivity حل شد.