В свободное время я внедряю приложение для Android (на Kotlin, но это не относится к проблеме), и я пытаюсь использовать android jetpack и новые библиотеки.У меня есть одно действие с навигационным ящиком.Я стараюсь следовать примеру подсолнечника .Он использует следующую комбинацию в основном действии, чтобы включить логику в навигационном блоке:
appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
setSupportActionBar(findViewById(R.id.toolbar))
setupActionBarWithNavController(navController, appBarConfiguration)
Примечание к этому коду : при переходе по щелчку внавигационный ящик и закройте ящик, оставьте их выбранными и т. д. Весь этот стандартный код.Это довольно опрятно и тоже работает.Насколько я понимаю, идентификаторы пунктов меню навигационного ящика должны совпадать с идентификаторами фрагментов на графике навигации и таким образом они соединяются.
У меня проблема : Когда я использую панель навигации для перехода к любому фрагменту, кроме начального фрагмента графика навигации, вместо элемента для гамбургера будет отображаться кнопка «Назад».Это не то, что я ожидаю, я бы ожидал, что это все еще будет гамбургер, поскольку блок навигации предназначен для навигации между представлениями на одинаковом уровне, а не вложенными друг в друга, верно?Я ожидаю кнопку возврата, если перейду к субфрагменту какого-либо фрагмента, щелкнув элементы в этом фрагменте (например, список -> подробности), но не при переходе с использованием панели навигации.
Теперь я проследил эту проблемуВернемся к конструктору AppBarConfiguration
, который читает на конструкторе, принимающем navgraph The NavGraph whose start destination should be considered the only top level destination.
. Я могу довольно легко это исправить, переопределив AppBarConfiguration
, чтобы возвращать другие пункты назначения верхнего уровня, отличные от только начального пункта назначения навигационного графа.
Однако мой вопрос: почему это поведение по умолчанию?Это ошибка?Если я переопределю это, нарушу ли я некоторые рекомендации по дизайну от Google?Разве не все элементы в навигационной панели должны быть на одном уровне, как я ожидал?Есть ли другое решение, которое я хочу сделать?