Разница синтетических свойств Kotlin для представлений Android?

В документации по расширению Kotlin для Android говорится, что вы можете сократить путь findViewById(), используя оператор импорта. Однако в чем разница между импортом определенного представления kotlinx.android.synthetic.main.<layout-file-name>.<view-id>и импортом из kotlinx.android.synthetic.main.<layout-file-name>.view.<view-id>? Если вы сделаете первое, IDE покажет мне три одинаковых идентификатора представления, по одному для Activity, Dialog и Fragment. Если вы сделаете последнее, оно покажет имя идентификатора представления только один раз.


person ShrimpCrackers    schedule 03.11.2017    source источник


Ответы (1)


Подсказки IDE показывают типы классов, в которых можно использовать ссылку на представление: Activity, Fragment, Dialog или View. Когда вы вводите оператор импорта, среда IDE показывает завершение для всех доступных типов. Однако, когда вы пытаетесь использовать его внутри класса (без оператора импорта), IDE показывает вам подсказку импорта для конкретного типа, который расширяет ваш класс.

Например, внутри класса активности, расширяя AppCompatActivity, вы получаете подсказку об импорте.

<view-id> from <layout-file-name> for Activity

Однако, если ваш класс расширяется от View или подклассов, вы получаете следующее:

<view-id> from <layout-file-name> for View

Что касается того, почему существует несколько вариантов, реализация кэширования представлений может различаться для разных типов. Подробнее об этом

person aksh1618    schedule 03.11.2017