Комментарии 12
Вам нравится NavigationComponent (даже с учетом всех этих костылей)? Намного удобнее роутинга через какую-нибудь абстракцию с ручной работой с FragmentManager?
+1
Привет!
Если кратко — мне НЕ нравится Navigation Component =)
Для мелких приложений, где у вас не будет никаких сложных вложенных навигационных графов, где не будет нижней навигации, дип линков, а будет просто переход с одного экранчика на другой — Navigation Component не так уж плох. Работать с графическим редактором, в котором можно мышкой добавлять экраны, и создавать для него переходы очень даже удобно. И это точно удобнее ручной работы с FragmentManager.
Но для больших приложений — лучше выбрать другую библиотеку или самому что-то сделать.
Если кратко — мне НЕ нравится Navigation Component =)
Для мелких приложений, где у вас не будет никаких сложных вложенных навигационных графов, где не будет нижней навигации, дип линков, а будет просто переход с одного экранчика на другой — Navigation Component не так уж плох. Работать с графическим редактором, в котором можно мышкой добавлять экраны, и создавать для него переходы очень даже удобно. И это точно удобнее ручной работы с FragmentManager.
Но для больших приложений — лучше выбрать другую библиотеку или самому что-то сделать.
+2
Привет!
Какие альтернативные библиотеки могли бы посоветовать, кроме чичерони (по мне, так она тоже полна недостатков)?
0
Если вы спрашиваете про сегодняшний день, то — Cicerone, который, всё-таки, решает гораздо больше проблем, чем добавляет)
Если про недалёкое будущее, то, может быть в Jetpack Compose будет уже меньше проблем с этим. Не помню уже где, но видел там какие-то конструкции вида:
Выглядит неплохо =)
Если про недалёкое будущее, то, может быть в Jetpack Compose будет уже меньше проблем с этим. Не помню уже где, но видел там какие-то конструкции вида:
Crossfade(navigationViewModel.currentScreen) { screen ->
when (screen) {
is Screen.Home -> HomeScreenComponent()
is Screen.Articles -> ArticlesScreenComponent()
}
}
Выглядит неплохо =)
0
Вопрос слегка не в тему. Но откуда пошло желание иметь отдельный бекстек для каждой боттом вкладки? Если есть ссылки на хорошие статьи почему это хорошо и улучшает юзабилити/ux/и тд, то был бы рад..
+1
Привет!
Почему же не в тему, вполне в тему. Каких-то исследований сходу не могу привести, не натыкался, кажется.
Но отдельный back stack нужен, если вы хотите:
а) по кнопке назад возвращаться на предыдущий экран в той же самой вкладке даже после переключения между вкладками. Например, в соискательском приложении hh.ru вы можете открыть вкладку «Профиль», там открыть своё резюме, потом переключиться на вкладку «Избранное», там открыть какую-то вакансию. Если вы после этого переключитесь на «Профиль» и нажмёте кнопку Back, вас перебросит на предыдущий экран именно во вкладке «Профиль», а не на экран во вкладке «Избранное».
б) Если хотите сохранять пройденный пользователем путь в отдельной вкладке — опять же, вы можете в соискательском приложении hh.ru открыть какую-то вакансию на первой вкладке, открыть из неё ещё кучу других вакансий, потом переключиться на вкладку «Избранное» и сделать там тоже самое. Когда вы переключитесь обратно на первую вкладку, вы сможете повторить весь путь обратно до стартового экрана вкладки.
Имхо, это улучшает UX, я был бы недоволен приложением, если бы информация, которую я так долго искал внутри вкладки, куда-то пропала.
Почему же не в тему, вполне в тему. Каких-то исследований сходу не могу привести, не натыкался, кажется.
Но отдельный back stack нужен, если вы хотите:
а) по кнопке назад возвращаться на предыдущий экран в той же самой вкладке даже после переключения между вкладками. Например, в соискательском приложении hh.ru вы можете открыть вкладку «Профиль», там открыть своё резюме, потом переключиться на вкладку «Избранное», там открыть какую-то вакансию. Если вы после этого переключитесь на «Профиль» и нажмёте кнопку Back, вас перебросит на предыдущий экран именно во вкладке «Профиль», а не на экран во вкладке «Избранное».
б) Если хотите сохранять пройденный пользователем путь в отдельной вкладке — опять же, вы можете в соискательском приложении hh.ru открыть какую-то вакансию на первой вкладке, открыть из неё ещё кучу других вакансий, потом переключиться на вкладку «Избранное» и сделать там тоже самое. Когда вы переключитесь обратно на первую вкладку, вы сможете повторить весь путь обратно до стартового экрана вкладки.
Имхо, это улучшает UX, я был бы недоволен приложением, если бы информация, которую я так долго искал внутри вкладки, куда-то пропала.
+2
Спасибо за статью, ещё раз убеждаюсь, что Nav Component не очень удачная библиотека, мягко говоря.
Мало того, что половина фич не работает (работает коряво), так ещё и куча крашей.
Уж лучше написать руками с FragmentManager, чем насиловать себя этой библиотекой.
Ещё больше печалит тот факт, что с коллегами периодически возникают холивары на эту тему и лагерь разделился 50/50.
Мало того, что половина фич не работает (работает коряво), так ещё и куча крашей.
Уж лучше написать руками с FragmentManager, чем насиловать себя этой библиотекой.
Ещё больше печалит тот факт, что с коллегами периодически возникают холивары на эту тему и лагерь разделился 50/50.
+1
Спасибо, а следующие статейки примерно когда ждать?
0
Привет!
Вторая часть — на следующей неделе, и третья — через неделю после второй.
В качестве альтернативы предлагаю посмотреть видео. Там, по сути, тоже самое. Разве что я в статью мелкие добавления вставляю, которые не поместились в доклад.
Вторая часть — на следующей неделе, и третья — через неделю после второй.
В качестве альтернативы предлагаю посмотреть видео. Там, по сути, тоже самое. Разве что я в статью мелкие добавления вставляю, которые не поместились в доклад.
+1
Заюзал, добавил в onCreate() и onRestoreInstanceState() — все работало отлично. Меняю системную тему на темную или светлую: java.lang.IllegalStateException: Fragment androidx.navigation.fragment.NavHostFragment did not create a view.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Navigation Component-дзюцу, vol. 1 — BottomNavigationView