Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Интересное поведение kotlinx

#android #kotlin


Столкнулся со следующей проблемой, подключил библиотеку, в которой есть некие вьюшки
с определенными id'шками. И в main проекте при обращении к этому определенному view
не взначай прописал тот же id и для свой view.
После этого kotlinx вместо того чтобы обращаться в классе к моей id моего проекта,
обратился вплоть до id подключенной библиотеки.

Как можно избежать подобных ситуаций?
Пока как вариант это переименование id в main или библиотеки, но так как это  порой
не явно всплывает, то хотелось бы как то по другому обойти. Возможно кто то сталкивался
уже с чем-то подобным. 

UPD:

Хочу заметить что импорт не меняется, к примеру:

import kotlinx.android.synthetic.main.dialog_immediate_categorization.*

Где в самой разметке:




Где как видно что: com.mandarine.android.common это в моём случае элемент подключенной
библиотеки в которой для класса TitleSwitchView выделена разметка состоящая из TextView
и SwitchView в котором так раз таки и указан id switchView.
И уже в моём классе он обращается не к switchView типа TitleSwitchView а к id switchView
типа SwitchView.
    


Ответы

Ответ 1



Скройте ресурсы библиотеки. Хороший ответ в офф документации https://developer.android.com/studio/projects/android-library#PrivateResources

Ответ 2



Уу, вот это вопрос! Затрагивает давно известную тему доступности ресурса по всему коду приложения, и как следстве опасность коллизии имен. Механизм поиска обекта в КотлинИкс подразумевает скоуп всего дерева элементов. Обойти данную проблему можно отказом от КотлинИкс. Главное не прибегать к решению в котором используются более сложные имена для обьектов. Автор вопроса молодец!

Комментариев нет:

Отправить комментарий