Краткий ответ:
Я исправил это, переместив анонимный класс, который расширил androidx.navigation.Navigator
, в отдельный класс и добавив аннотацию @Navigator.Name(String name)
с уникальным именем.
Если вы также столкнулись с этой проблемой, проверьте, есть ли в вашем проекте или его зависимостях классы, унаследованные от класса Navigator
, в которых отсутствует аннотация @Navigator.Name(String name)
или используются неуникальные строки в качестве параметра name
, fragment
и activity
нельзя использовать, поскольку они уже используются в API.
Дополнительная информация:
После дальнейшего изучения исходного кода плагина поддержки Android, чтобы понять, что происходит, мне удалось решить проблему с нашим проектом.
При запуске функциональности IDE в плагине поддержки Android он просматривает ваш проект и все зависимости, ищет любой класс, который наследует класс Navigator
, и присваивает ему тег для управления им в файлах XML и представлениях дизайна. , Этот тег основан на аннотации @Navigator.Name(String name)
. Если аннотации отсутствуют, используется значение по умолчанию.
Эти теги должны быть уникальными, поскольку они используются в качестве ключей для построения неизменяемой карты тегов с типами навигатора. В нашем проекте у нас был анонимный класс, который расширял класс Navigator
и не имел аннотаций.
Существует также анонимный класс, расширяющий Navigator
внутри источника компонента навигации, в частности, внутри класса NavDeepLinkBuilder
. Поскольку для тегов существует только одно значение по умолчанию, любой другой класс, наследующий Navigator
, без аннотации, присутствующей в вашем проекте, или его зависимостей, вызовет эту проблему.