Когда я, например, нахожусь во фрагменте 5 и нажимаю кнопку «Назад», приложение выходит. Я хочу, чтобы когда я нажимал кнопку «Назад», я открывал фрагмент № 1. Как я могу это сделать?
Я перепробовал много кодов, но он не работает, например
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
и
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Вот мой код фрагмента в MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// make new object and find the view "BottomNavigationView"
BottomNavigationView navigationView = findViewById(R.id.bottom_navigation);
// To make the first fragment shows when the app start.
// We will ignore the "activity_main" and we will make new activity(fragment) called "fragment_home"
// and we will add all views we want to display them on it.
// (fragment_layout) it is a fragment have id was defined in "activity_main"
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout,
new HomeFragment()).commit();
// make Listener to call the fragments on buttons
// to start new fragment
navigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
// first fragment "home"
case R.id.home_item:
selectedFragment = new HomeFragment();
break;
// second fragment "videos"
case R.id.videos_item:
selectedFragment = new VideosFragment();
break;
// third fragment "ebadat"
case R.id.ebadat_item:
selectedFragment = new EbadatFragment();
break;
// fourth fragment "images"
case R.id.images_item:
selectedFragment = new ImagesFragment();
break;
// fifth fragment "more"
case R.id.settings_item:
selectedFragment = new MoreFragment();
break;
}
assert selectedFragment != null;
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, selectedFragment).commit();
return true;
}
});
}