Как программно определить ItemID для деятельности - PullRequest
0 голосов
/ 02 февраля 2019

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

...