Подкаталоги / пакеты Android Studio внезапно не могут найти R.java?

Я обновил AS до последней стабильной сборки, и все мои проекты расплавились. Только файлы Java в основном каталоге (com.company.app) могут найти R.java должным образом. ВСЕ мои поддиры не могут его найти. Перед обновлением мне не нужно было импортировать R.java. Я перестраивал свои проекты с нуля, восстанавливал резервные копии, копировал и вставлял в новые проекты из резервных копий, переустанавливал AS, перезагружал ПК, недействовал кеши и перезагружал, очищал буквально каждый раз, чтобы использовать решение insta-fix-it, которое всегда рекомендует Интернет, и все же Я не могу заставить это работать.

Может ли кто-нибудь сказать мне, как мои подкаталоги не могут найти R.java, но другие файлы в моем основном каталоге могут? Это изменение функции в AS или что-то в этом роде? Мы теперь должны импортировать R.java? Ошибок XML нет. Мой проект был создан до того, как я переместил файлы подкаталогов обратно в свой основной пакет. Имя пакета в точности совпадает с именем в моем манифесте.

Изменить 1: я могу перестроить свой проект и сделать R.java. Файлы основного пакета по-прежнему видят его без импорта, но подкаталоги не могут его найти.

Изменить 2: я могу переместить файл из основного пакета в подкаталог, и он все еще находит R.java. Похоже, это глюк компилятора.

Изменить 3: импорт R.java устраняет ошибки, поэтому я думаю, что это решение. Я оставляю вопрос открытым, потому что это не имеет логического смысла.

Класс R автоматически создается во время компиляции. Всякий раз, когда у меня возникает эта проблема, оказывается, что я неправильно назвал пакет. Убедитесь, что имя пакета в подкаталоге совпадает с объявленным в манифесте. Кроме того, вы говорите «подкаталог», я полагаю, вы имели в виду «пакет», поскольку файлы Java могут быть размещены в любом месте независимо от структуры каталогов и важны, как если бы они находились в одном каталоге.

Neel Kamath 15.06.2018 03:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
47
2

Ответы 2

Вы должны понимать, как работают ресурсы приложения.

Когда вы создаете свой проект Android, все ваши ресурсы в папке /res будут автоматически сопоставлены с сгенерированным классом your.package.names.R.

Теперь вы хотите получить доступ к ресурсам через класс. Это имеет смысл только тогда, когда вам нужно импортировать файл, когда вы используете его в другом пакете.

Я делаю приложения уже 4 года. Я понимаю, как они работают. Это требование является новым на этой неделе.

Andrew No 15.06.2018 03:46

У меня была эта проблема, хотя ошибка не была подчеркнута красным, в моем strings.xml была ошибка. Перейдите в Values-> strings.xml и проверьте, не дублировали ли вы какие-либо строки.

Нет такой удачи. Однако спасибо. Я буду везде проверять наличие дубликатов, но, поскольку проект был создан до обновления моей AS, я буду удивлен, если я их увижу.

Andrew No 15.06.2018 03:49

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