Согласно документации UI , методы NavigationUI, такие как метод setupActionBarWithNavController()
, основаны на OnDestinationChangedListener
, который вызывается каждый раз, когда вы navigate()
вызываете новый пункт назначения. Вот почему метка не изменяется мгновенно - она обновляется только при переходе к новому месту назначения.
Документация объясняет, что для верхняя панель приложения :
метка, которую вы прикрепляете к адресату, может автоматически заполняться из аргументов, предоставленных адресату, используя формат {argName}
в вашей метке.
Это позволяет вам обновить ваш R.string.prepare_order_details_title
в виде
<string name="prepare_order_details_title">Prepare order {orderId}</string>
Используя тот же аргумент в пункте назначения, ваш заголовок будет автоматически заполнен правильной информацией.
Конечно, если у вас нет аргумента, который вы могли бы определить заранее, тогда вы бы вообще не хотели устанавливать android:label
в пункте назначения и вместо этого вручную обновлять заголовок панели действий и т. Д. из этого пункта назначения.