Я новичок в kotlin, я преобразовал некоторый код из java, но похоже, что что-то не так, R в findViewById (R.id.my_id) выделен красным и показывает это сообщение: "Unresolved reference: R" .. Я искал решение, но, похоже, не понял его, так что мне делать? Вот скриншот:
Иногда эта проблема решается просто путем сборки, если ваш проект не содержит ошибок.
Знаете ли вы, что в Kotlin вам не нужен findViewById в ваших действиях?
Да _____________




Это сработало для меня. Сколько это будет работы, зависит от того, насколько велик ваш проект. Я начал новый проект, создал необходимые модули (XML, Kotlin, цвета, строки и т. д.), А затем скопировал код в модули нового проекта из модулей старого проекта. Копирование XML экономит много времени по сравнению с воссозданием пользовательского интерфейса. В общем, это займет немного времени, но я потратил гораздо больше времени, чтобы исправить неразрешенную справочную ошибку без нее.
Используйте команды gradle.
В Android Studio в правом меню: Gradle -> :app -> Tasks -> build -> clean.
После этого Gradle -> :app -> Tasks -> build -> build
Если вы не видите меню Gradle справа. Проверьте Android MenuBar -> View-> Tool Windows -> Gradle
Вы также можете сделать это из командной строки: rm -rf .gradle | rm -rf build/ | ./gradlew assemble
Я использовал com.android.tools.build:gradle:3.3.0-alpha13 и имел ту же проблему. Переход на стабильную версию 3.2.1 решил эту проблему для меня.
Да, возврат к версии 3.3.0-alpha13 stable 3.2.1 устранил проблему!
По-прежнему актуально для версии 3.3.1 стабильной. Необходимо перейти на 3.2.1, и проблема R решена. Приложение компилировалось, но R не был импортирован, а расширения Kotlin работали нормально.
ПОПРОБУЙ ЭТО
Зайдите в файл content_main.xml и там вам нужно изменить
android:id = "@+id/??????"> строки кода для любого идентификатора, который вы дали своему файлу.
Замените вопросительный знак ?????? на имя идентификатора связанного файла (если вы не знаете идентификатор, перейдите на вкладку дизайна внизу и щелкните соответствующий актив.
С правой стороны под атрибутами вы можете найти идентификатор, который вы ему дали. Если он пуст, вы можете дать ему новое имя, и Android Studio напишет код.
Затем перезапустите Android Studio. Надеюсь, это поможет. Удачного кодирования.
Полагаю, что натолкнулся на реальный ответ (хотя и случайно).
Я также, поскольку у OP был мой файл KT, который не смог найти R., а также другие классы, которые оказались в java. Я заметил разницу в регистре имен файлов. Как только я исправил операторы импорта, чтобы они соответствовали случаю пакета (он же папка), ошибки были устранены.
Проблема может быть вызвана многими факторами,
com.android.tools.build:gradle, изменение ее версии на более стабильную решит проблему: например: com.android.tools.build:gradle:3.4.0-alpha02 с com.android.tools.build:gradle:3.2.1Кроме того, наличие библиотек из одной группы, но с разными версиями может вызвать проблему или даже больше ошибок времени выполнения. используйте метод exclude group, как показано ниже: implementation('com.squareup.picasso:picasso:2.71828') { exclude(group: 'com.android.support') } в этом случае библиотека picasso использует компоненты android.support, версия библиотеки Android, используемая в picasso, отличается от той, которую вы сейчас используете в своем приложении, поэтому для решения этой проблемы , мы должны полностью исключить его из подбиблиотеки и групп классов.
Это также может произойти из-за несоответствия ресурсов и кода, включение этой строки импорта в вашу деятельность также может решить проблему: import com.package.name.R
Build -> Clean Project / Rebuild Project- Очистка наличных средств IDE также помогает с производительностью и памятью, на Android Studio это будет выглядеть так: File-> Invalidate Chases/ Restart -> Invalidate Cashes and Restart. , , - , UpperCase or special Letters.kotlinx.android.synthetic.main.activity_page.* или, если вы используете настраиваемое представление: kotlinx.android.synthetic.main.view_layout.view.*после этого, в методе onCreat () действия вам нужно будет только вызвать идентификатор, например: my_edit_text_ID.text = "Kotlin Dbest!", или из пользовательского представления: mCostumView.my_edit_text_ID.text = "Kotlin Dbest!"РЕДАКТИРОВАТЬ :
Я снова столкнулся с этой проблемой, и проблема заключалась в том, что библиотека R была импортирована из двух разных источников:
com.android.R
com.example.package.R
Вы должны импортировать только библиотеку «R» с именем пакета вашего приложения,
в этом случае com.example.package.R
Иногда библиотека вообще не импортируется, чтобы импортировать ее, нажмите на
неразрешенная ссылка R и нажмите Alt + Enter
Обновлено:
Как упоминал Tobltobs в разделе комментариев: «В большинстве случаев проблема вызвана другой ошибкой, которая не позволяет системе сборки создавать сгенерированные источники. Чтобы найти основную причину, посмотрите журнал Gradle (значок« Переключить представление »под зеленый молоток в выходных данных сборки) и ищите ошибки, не связанные с R или BuildConfig (также сгенерированными). Если других ошибок не осталось и проблема с R сохраняется, то, возможно, что-то из этого списка может помочь ».
для меня даже r не решен, можно запустить приложение. я использую Mac
@KMC, я рад, что это помогло, если вы все еще хотите использовать эти библиотеки, вы можете использовать метод exclude, я обновил второй пункт, вы можете его проверить.
Помогло добавление import com.package.name.R поверх фрагмента
моя проблема была с именем пакета - я изменил его, но, очевидно, не везде - автоматически сгенерированное действие использовало старое имя. Я провел рефакторинг имени пакета, и все вернулось к норме.
Это случилось со мной при интеграции источников библиотеки (например, при удалении .jar / aar и замене его папкой src) в целях отладки. Импорт R в этом случае - это нет - имя пакета, в котором находится проблемный файл, это пакет, в котором источник Activity находится для MAIN-действия из AndroidManifest.xml.
У меня была такая же проблема со ссылкой на R.
Наконец, была выпущена Android Studio 3.3, и с помощью 'com.android.tools.build:gradle:3.3.0' проблема была решена!
У меня была та же проблема, и я старался не переходить с Gradle версии 3.3 на Gradle версии 3.2.1. Вместо этого я обновил Android Studio до версии 3.3, что помогло мне ;-)
Обновление Android Studio до версии 3.3.1 решило эту проблему для меня.
Я обновил Android Studio до версии 3.3.1 и решил эту проблему.
kotlin version = '1.3.21' gradle plugin version = '3.3.2' gradle version = '4.10.1' получил эту проблему на Android Studio 3.2.1, обновление Android Studio до 3.3.2 решило проблему
Вот решение, Файл-> Структура проекта-> Проект, в раскрывающемся списке выберите Версия плагина Android Gradle как 3.2.1. затем нажмите «Применить».
У меня это не сработало. File-> Invalidate Caches / Restart работал у меня, как было предложено другим ответом, но нет единого решения этой проблемы, как указано другими. Это может быть вызвано множеством причин.
У меня сработало понижение версии Gradle.
Я изменился :
Gradle version from : 4.10.4 to 4.4.1
and Gradle Plugin version from : 3.3.1 to 3.1.3
Если у вас возникла эта проблема в Kotlin, потому что вы не можете ссылаться на элементы макета xml по идентификаторам. (например, R.id.adView), затем попробуйте удалить строку import android.R из вашего файла kotlin.
Для меня это было потому, что я создал новый пакет, а R не был доступен, пока я не импортировал его из пакета выше.
Я столкнулся с той же проблемой. Я перезапустил свою Android Studio, аннулировал кеши, синхронизировал Gradle, но ничего не работало. Затем я заглянул в свой файл и обнаружил, что два импорта из моего R. 1 связаны с моим пакетом приложения, а другой - с Android.
Удаление второго импорта, связанного с Android, решило эту проблему.
У меня был неправильный оператор импорта import android.R вместо import my.project.package.R. Исправление решило проблему
Вы попробуете
Invalidate Cache / Restart.