Файл R.java не обновляется с идентификатором элемента пользовательского интерфейса - PullRequest
16 голосов
/ 21 марта 2010

Я добавил некоторые элементы пользовательского интерфейса в файл main.xml в папке res \ layout, и когда я пытаюсь получить к ним доступ через вызов, R.layout.my_uielement, созданный мной элемент пользовательского интерфейса отсутствует. Даже когда я добавляю новый XML-файл с элементами пользовательского интерфейса, он все равно не отображается в классе R.layout. Я проверил идентификаторы на них, и они имеют правильный формат (я думаю): android:id="@+id/my_button". В чем может быть проблема? Нужно ли сначала компилировать код?
UPDATE
Я уже пробовал adb kill-server тогда adb start-server. Кажется, это не помогает. Я также попробовал R.id.my_uielement, он тоже не регистрируется.

Ответы [ 8 ]

35 голосов
/ 21 марта 2010

Это может быть не так, но иногда, когда я использую что-то из пакета android.R (ресурсы android по умолчанию) и использую это в своем классе, прежде чем делать ссылку на что-либо из моего пакета ресурсов, Eclipse добавляет import android.R; заявление в моем импорте. Это будет конфликтовать с поведением по умолчанию для неявного просмотра ресурсов вашего пакета.

Проверьте свои заявления на импорт для import Android.R;. Если это там, удалите это. И, если вы используете что-то из android.R, полностью квалифицируйте его, когда используете в коде.

9 голосов
/ 29 июля 2011

Чистый проект работает отлично.В Eclipse, если вы просто измените некоторые xml-компоненты, он не всегда генерирует новый R-файл.Очистка делает это.

6 голосов
/ 21 марта 2010

Используйте R.id.your_ui_element, а не R.layout.your_element

2 голосов
/ 10 декабря 2012

Clean работает, потому что это BUILD проект после очистки. Таким образом, проблема заключается (по крайней мере, в моем случае, потому что я отключил автоматическую сборку несколькими днями ранее), что после добавления элемента или чего-либо в XML-файл, затмение не создает его и не может обновить R.java.

2 голосов
/ 07 декабря 2011

Через 2 дня я нашел способ это исправить ...

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

2 голосов
/ 05 июля 2011

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

Если R.java не сгенерирован при создании проекта, запустите ваш пустой проект. R.java со ссылками на ресурсы будет создан автоматически.

Если R.java не получает updated , проверьте обновления в Справка -> Проверить обновления в Eclipse и при необходимости обновите SDK и ADT.

1 голос
/ 26 апреля 2014

Ничто из этого не сработало для меня! Единственный способ получить доступ к @+id/foo - это myPackage.R.id.foo.

1 голос
/ 16 декабря 2011

Я заметил, что мой файл R.java не всегда корректно обновляется, когда я добавляю элементы в мой файл strings.xml или где-либо еще. Если я использую новое значение, которое я добавил как R.string.newString, фактическое целочисленное значение может все еще указывать на R.string.oldString или что-то еще (обычно это элемент непосредственно над или под новым элементом в strings.xml, но Я еще точно не прибил шаблон).

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

Пожалуйста, обратите внимание, я очень начинающий в Eclipse, поэтому я не могу понять последствия удаления R.java, но пока мне кажется, что это работает хорошо. Если то, что я делаю, очень плохо, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...