Я занимаюсь разработкой приложения для Android и разделил свою деятельность на отдельные пакеты;разделение проблем и все такое.Затем я начал использовать компонент навигации только для того, чтобы выяснить, что он обслуживает только навигацию внутри фрагментов действия.Это не очень хорошо справляется с навигацией между действиями;По крайней мере, он не вписывает действия в отдельные модули особенно элегантно, если только один кросс не импортирует все их модули.Итак, я теперь опрашиваю действия через менеджер пакетов и настраиваю свою собственную навигацию по интерактивным действиям из классов ActivityInfo
, которые он возвращает.
Теперь компонент навигации позволяет указать "@+id/ACTIVITY"
в качествеменю ItemID
, когда оно подходит для других видов деятельности.Мне было интересно, могу ли я сгенерировать / получить доступ к этим идентификаторам ресурсов программно из экземпляров ActivityInfo
, чтобы я мог правильно установить ItemID
при вызове Menu.add(..,ItemID,...)
.
Мой код выглядит следующим образом.
targets(this).forEachIndexed { counter, info ->
if (info != null)
{index.getMenu().add(Menu.NONE, Menu.NONE, counter, title(this, info)).setIcon(icon(this, info))}
}
targets(this)
возвращает массив ActivityInfo
экземпляров, title(...)
и icon(...)
определяют соответственно заголовок и значок для действия.В настоящее время я использую Menu.NONE
в качестве ItemId
, но предпочел бы получить доступ / создать идентификатор для действия.
Я надеюсь, что после того, как у меня будет соответствующий идентификатор, я заставлю функцию обратного вызова меню вызвать намерение для связанной деятельности.Мне было интересно, как / где Android генерирует их и как получить к ним доступ, как описано выше.