First_Spectr
@First_Spectr
Студент

Откуда менять фрагмент?

У меня есть main activity с FrameLayout, в который я помещаю фрагмент, и bottomNavigation, для перемещения между этими фрагментами. В самих фрагментах есть кнопки, которые открывают новые фрагменты вместо них, делается это следующим образом:
FragmentManager manager = getActivity().getSupportFragmentManager();
getActivity().findViewById(R.id.button).setOnClickListener(v -> manager.beginTransaction().replace(R.id.frame_layout, new Fragment).commit());

Нормальный ли это подход для смены фрагментов? Предполагается, что вложенные фрагменты тоже смогут открывать новые фрагменты. Может быть я должен заменять не содержимое контейнера, а себя как фрагмент?

И побочный вопрос, можно ли сохранять/загружать стек транзакций? Хочу сделать для каждого пункта bottomNavigation отдельную историю.
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
RATlius
@RATlius
Разработчик Android
В вашей логике используется подход, когда Вы назначаете одной и той же кнопке разные обработчики в каждом фрагменте.
Для целей смены фрагментов есть хорошее руководство от самого Google, которое говорит реализовывать Callback'и. Это проще в поддержке и масштабируемости Вашего приложения.
Это суть того вопроса который Вы задали (заменяйте мысленно "операция" на Activity).
Очень рекомендую ознакомиться со всей статьей. И вообще с общими методами разработки приложений от Google, потому что многие разработчики им следуют как негласному стандарту, а если Вам в будущем придется поддерживать/изменять чужой проект, велика вероятность того, что Вы уже будете знакомы с используемыми приемами.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы