Intereting Posts
Котлин: Путаница с лямбдами и дженериками ClassCastException: android.inputmethodservice.KeyboardView не может быть добавлен в com.support.mukhtar.simplekeyboard.CustomKeyboardView android Как я могу отобразить его значение в коде .parseList {DayForecast (HashMap (it))} в Android Studio 3.0? Kotlin Длинные поплавковые разницы Функция rxjava :: zip возвращает пустой результат Тип свойства – это не тип переопределения Spring Boot вставляет недопустимое datetime в MariaDB, приводит к нулевому значению, а не к нулевому полю Оборонительная копия изменчивой коллекции в классе данных Kotlin Как издеваться над статическими методами в Котлине? Как исправить ошибку вывода типа в Completed, преобразованную с помощью RxLifecycle.bindToLifecycle ()? Как обернуть текст в быстрой документации в IntelliJ? Android Studio сообщает «Не удалось определить активность запуска: активность по умолчанию не найдена» при построении проектов Kotlin Ввод не работает со вторым конструктором Kotlin "Любой тип, который реализует интерфейс" Требуется генерация. Строка найдена kotlin.String

Ссылка на представления с одним и тем же идентификатором в разных макетах с расширением android kotlin

В моем проекте Android у меня есть два макета: num_info и num_info_pack. Оба имеют представления с идентификатором «круг». Поэтому я подумал, что ссылка на эти представления по макету_name.circle решит проблему:

val inetView = activity.layoutInflater.inflate(R.layout.num_info_pack, parent, false) inetView.circle.setBackgroundResource(background) 

Но круг подчеркивается красным, и он говорит:

Неопределенность разрешения перегрузки. Все эти функции совпадают.

public val View.circle: Посмотреть! определен в kotlinx.android.synthetic.main.num_info_pack.view

public val View.circle: RelativeLayout! определен в kotlinx.android.synthetic.main.num_info_inet_plus_pack.view

Почему это путается в том круге, о котором я говорю, если я конкретно говорю inetView.circle?

Решение здесь находится в импорте. Вы должны импортировать два макета, например

 import kotlinx.android.synthetic.main.num_info_pack 

а также

 import kotlinx.android.synthetic.main.num_info_inet_plus_pack 

Удалите один из них и сохраните файл с соответствующим файлом макета, который вы хотите импортировать. Он должен работать нормально.

У меня сейчас нет андроид-студии, но я думаю, что это решит вашу проблему:

 package XXX import kotlinx.android.synthetic.main.num_info_inet_plus_pack.view.circle as inetViewCircle import kotlinx.android.synthetic.main.num_info_pack.view as circle //... val inetView = activity.layoutInflater.inflate(R.layout.num_info_pack, parent, false) inetViewCircle.setBackgroundResource(background) 

Не знаю, будет ли это работать, потому что я не могу проверить его прямо сейчас. Пожалуйста, дайте мне знать, работает ли он.

Проблема заключается в столкновении имен, поэтому я думаю, что импорт может помочь.

В дополнение к уже очень хорошим ответам, если у вас одинаковые идентификаторы в нескольких макетах вашего проекта, не имеет значения, какой из них вы выбираете. Аналогичные идентификаторы, независимо от того, какой формат он определен, в конечном итоге указывают на один и тот же вид. Таким образом, вы можете отказаться от других импортов, оставив только макет (ы), который имеет для вас значение в текущей activity/fragment/view

надеюсь, это поможет