Android Studio 3.1.3 - неразрешенная ссылка: R - Kotlin

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

Android Studio 3.1.3 - неразрешенная ссылка: R - Kotlin

Вы попробуете Invalidate Cache / Restart.

Crammeur 31.07.2018 22:11

Иногда эта проблема решается просто путем сборки, если ваш проект не содержит ошибок.

user8959091 31.07.2018 22:14

Знаете ли вы, что в Kotlin вам не нужен findViewById в ваших действиях?

user8959091 01.08.2018 21:45

Да _____________

user8959091 01.08.2018 21:48
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
39
4
41 725
15
Перейти к ответу Данный вопрос помечен как решенный

Ответы 15

Это сработало для меня. Сколько это будет работы, зависит от того, насколько велик ваш проект. Я начал новый проект, создал необходимые модули (XML, Kotlin, цвета, строки и т. д.), А затем скопировал код в модули нового проекта из модулей старого проекта. Копирование XML экономит много времени по сравнению с воссозданием пользовательского интерфейса. В общем, это займет немного времени, но я потратил гораздо больше времени, чтобы исправить неразрешенную справочную ошибку без нее.

Используйте команды gradle. В Android Studio в правом меню:
Gradle -> :app -> Tasks -> build -> clean.
После этого Gradle -> :app -> Tasks -> build -> build

Если вы не видите меню Gradle справа. Проверьте Android MenuBar -> View-> Tool Windows -> Gradle

k-thorat 19.10.2018 00:24

Вы также можете сделать это из командной строки: rm -rf .gradle | rm -rf build/ | ./gradlew assemble

IgorGanapolsky 01.02.2019 19:30

Я использовал com.android.tools.build:gradle:3.3.0-alpha13 и имел ту же проблему. Переход на стабильную версию 3.2.1 решил эту проблему для меня.

Да, возврат к версии 3.3.0-alpha13 stable 3.2.1 устранил проблему!

Subodh Nijsure 22.10.2018 02:00

По-прежнему актуально для версии 3.3.1 стабильной. Необходимо перейти на 3.2.1, и проблема R решена. Приложение компилировалось, но R не был импортирован, а расширения Kotlin работали нормально.

MainActivity 16.03.2019 15:23

ПОПРОБУЙ ЭТО

Зайдите в файл content_main.xml и там вам нужно изменить

android:id = "@+id/??????"> строки кода для любого идентификатора, который вы дали своему файлу.

Замените вопросительный знак ?????? на имя идентификатора связанного файла (если вы не знаете идентификатор, перейдите на вкладку дизайна внизу и щелкните соответствующий актив.

С правой стороны под атрибутами вы можете найти идентификатор, который вы ему дали. Если он пуст, вы можете дать ему новое имя, и Android Studio напишет код.

Затем перезапустите Android Studio. Надеюсь, это поможет. Удачного кодирования.

Полагаю, что натолкнулся на реальный ответ (хотя и случайно).

Я также, поскольку у OP был мой файл KT, который не смог найти R., а также другие классы, которые оказались в java. Я заметил разницу в регистре имен файлов. Как только я исправил операторы импорта, чтобы они соответствовали случаю пакета (он же папка), ошибки были устранены.

Ответ принят как подходящий

Проблема может быть вызвана многими факторами,

  • как упоминалось martomstom в этом Отвечать, проблема иногда вызывается версией 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

  • Иногда это может произойти из-за IDE, производительности или памяти. Периодическая очистка проекта может сэкономить вам некоторое время, в Android Studio это будет примерно так: Build -> Clean Project / Rebuild Project- Очистка наличных средств IDE также помогает с производительностью и памятью, на Android Studio это будет выглядеть так: File-> Invalidate Chases/ Restart -> Invalidate Cashes and Restart
  • Я заметил, что эта проблема возникает у меня чаще всего при импорте новых ресурсов. Использование запрещенных символов в их именах приведет к возникновению ошибки, например . , , - , UpperCase or special Letters.
  • И в качестве предложения, если вы используете Котлин, я действительно рекомендую использовать расширения Kotlin в вашей деятельности, например: import 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

DKV 20.01.2019 10:56

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

Tamim Attafi 17.03.2019 06:49

Помогло добавление import com.package.name.R поверх фрагмента

vikzilla 16.10.2019 02:56

моя проблема была с именем пакета - я изменил его, но, очевидно, не везде - автоматически сгенерированное действие использовало старое имя. Я провел рефакторинг имени пакета, и все вернулось к норме.

Andy Weinstein 09.12.2019 17:21

Это случилось со мной при интеграции источников библиотеки (например, при удалении .jar / aar и замене его папкой src) в целях отладки. Импорт R в этом случае - это нет - имя пакета, в котором находится проблемный файл, это пакет, в котором источник Activity находится для MAIN-действия из AndroidManifest.xml.

CodeClown42 28.08.2020 18:40

У меня была такая же проблема со ссылкой на 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 решило эту проблему для меня.

Sergei Emelianov 15.03.2019 22:27

Я обновил 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 решило проблему

Jeffery Ma 04.04.2019 05:28

Вот решение, Файл-> Структура проекта-> Проект, в раскрывающемся списке выберите Версия плагина Android Gradle как 3.2.1. затем нажмите «Применить».

У меня это не сработало. File-> Invalidate Caches / Restart работал у меня, как было предложено другим ответом, но нет единого решения этой проблемы, как указано другими. Это может быть вызвано множеством причин.

wildcat12 19.05.2020 19:52

У меня сработало понижение версии 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.

  1. import com.example.myApp.R
  2. import android.R // Этот импорт был добавлен случайно во время сборки.

Удаление второго импорта, связанного с Android, решило эту проблему.

У меня был неправильный оператор импорта import android.R вместо import my.project.package.R. Исправление решило проблему

пакет com.mydomain.appname В моем случае я скопировал код, поэтому я забыл изменить имя пакета на свое.
J A S K I E R 02.01.2021 17:52

Другие вопросы по теме