Как программно определить ItemID для деятельности
Я занимаюсь разработкой приложения для 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 генерирует их и как получить к ним доступ, как описано выше.