Итак, я сделал нижнюю навигационную панель в своей основной деятельности и настроил фрагменты.Работает и все нормально.Только одна проблема, однако.Когда я перехожу к следующему занятию, к настройкам, у меня есть панель инструментов с кнопкой возврата, код выглядит так:
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
И это успешно возвращает меня к предыдущему занятию.Но проблема в том, что я возвращаюсь не на фрагменте профиля (откуда пользователь нажал кнопку настроек), а на домашний.Дело в том, что я делаю в MainActivity.java следующее:
getSupportFragmentManager().beginTransaction().replace(R.id.frameView, new HomeFragment())
.commit();
И это возвращает меня к домашнему фрагменту, даже если я хочу перейти с функцией finish () к предыдущему используемому фрагменту: настройкифрагмент.Но если я удаляю эту строку, я не могу загрузить домашний фрагмент в начале / запуске приложения.Итак, я нахожусь в некоторой дилемме.
Итак, вот мой нижний код навигации:
private BottomNavigationView.OnNavigationItemSelectedListener navigationViewListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return SelectItem(item.getItemId());
}
};
Тогда у меня есть этот метод:
private boolean SelectItem(int id) {
Fragment selectedFragment = null;
switch (id) {
case R.id.nav_home:
selectedFragment = new HomeFragment();
break;
case R.id.nav_files:
selectedFragment = new FilesFragment();
break;
case R.id.nav_message:
selectedFragment = new MessageFragment();
break;
case R.id.nav_profile:
selectedFragment = new ProfileFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.frameView, selectedFragment).commit();
return true;
}
ИтакЯ включаю функцию onCreate () и делаю это:
BottomNavigationView navigationView = findViewById(R.id.navigation_view);
navigationView.setOnNavigationItemSelectedListener(navigationViewListener);
SelectItem(R.id.nav_home);
Примечание: То, что настройки - это другое действие, а не фрагмент.Я просто загружаю его из фрагмента профиля.И когда я возвращаюсь из действия настройки, я просто хочу перейти к основному действию с тем же фрагментом, с которым я его оставил (имеется в виду фрагмент профиля).
Вопрос был решен мной.Если кто-то хочет предложить улучшения, он может ответить.