Я видел много статей о том, как реализовать навигацию снизу, но ни одно из этих решений не выглядело так, как в новом проекте, созданном с помощью Навигации снизу:
BottomNavigationView navView = findViewById(R.id.nav_view);
AppBarConfiguration.Builder(
R.id.navigation_timer, R.id.navigation_presets)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
Нет транзакций, нет FragmentManager
и т. Д.
Причина, по которой я спрашиваю, заключается в том, что я пытаюсь реализовать кнопку на Fragment2 (PresetsFragment), которая после щелчка устанавливает значения и переключает представление на Fragment1 (TimerFragment).
Это реализация интерфейса в MainActivity:
@Override
public void updateCountdowns(final int round_time, final int break_time)
{
TimerFragment timer = (TimerFragment)getSupportFragmentManager().findFragmentById(R.id.navigation_timer);
if (timer != null) {
timer.updateCountdowns(round_time, break_time);
} else
{
TimerFragment new_timer = new TimerFragment();
Bundle args = new Bundle();
args.putInt("round_time_bundle", round_time);
args.putInt("break_time_bundle", break_time);
new_timer.setArguments(args);
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction()
.replace(R.id.navigation_presets, new_timer, "new_timer")
.addToBackStack(null)
.commit();
}
}
После добавления логов я вижу, что интерфейс работает и создается новый TimerFragment, но сам фрагмент не меняется.