Я новичок в разработке Android, и я хотел спросить, какое решение здесь лучше всего.
В моем activity_main.xml есть контент, а внизу - <android.support.design.widget.BottomNavigationView>.
Я установил несколько иконок и создал для них слушатель. Навигация содержит простой значок настроек, и при щелчке по нему должен запускаться SettingsActivity. Эта навигация должна быть везде в приложении.
Вот мой вопрос: Каков наилучший подход, если я не хочу реализовывать этот BottomNavigationView в каждом отдельном действии, реализуя один и тот же слушатель снова и снова в каждом действии? Я слышал об использовании фрагментов вместо активности, но теперь они устарели, верно? Должен быть лучший способ, реализация навигации снова и снова с одним и тем же кодом не может быть правильным подходом.
Да, @ 0X0nosugar прав, и для макета просто создайте отдельный макет для нижней панели навигации, а затем используйте его в любом месте вашего приложения с помощью тега <include>
Так ... лучший способ избежать дублирования этого компонента - что явно неверно - использовать фрагменты? Или есть еще какой-нибудь современный андроид способ?
Хотя обычный com.android.Fragment не рекомендуется, класс фрагментов поддержки, расположенный в любом из androidx.fragment.app.Fragment, не является устаревшим, и, вероятно, это то, что имеет смысл использовать здесь.
Таким образом, используя фрагментарный подход, у вас будет один класс Activity с настроенным BottomNavigationView. Когда пользователь перемещается с помощью BottomNavigationView, вы меняете фрагмент, отображаемый в вашей Activity. Этот учебник должен быть хорошей отправной точкой для включения этой функции.
Here comes my question : What is the best approach when I don't want to implement this
BottomNavigationViewin every single activity, implementing the same listener over and over again in every activity
Вам не нужно этого делать, так как Fragment здесь, чтобы помочь, и они не обесцениваются, а заменены на AndroidX (новый): androidx.fragment.app.Fragment. Вместо того, чтобы реализовывать это снова и снова, замените новый Fragment, когда будет выбран другой элемент.
Используйте setOnNavigationItemSelectedListener и делайте свое дело.
Проверьте образец здесь.
«Я слышал об использовании фрагментов вместо активности, но теперь они устарели, верно?» Совершенно нормально использовать фрагмент из библиотеки поддержки. Единственный устаревший класс фрагментов -
android.app.Fragment, см., Например, эта почта.