При использовании проекта библиотеки Android, как правильно ссылаться на ресурсы xml?

У меня есть проект Android Library, который содержит несколько определенных стилей/тем. в его файле styles.xml.

Обычно при ссылке на этот стиль в каком-либо другом XML-макете или файле манифеста вы просто пишете android:theme="@style/TheNameOfTheStyle"

При использовании библиотечного проекта, как теперь зависимый проект правильно ссылается на этот стиль? Просто оставив его как android:theme="@style/TheNameOfTheStyle", я получаю сообщение об ошибке, говорящее, что ресурс, соответствующий этому имени, не найден.

Я предполагаю, что этот же вопрос относится и к другим ссылкам, таким как @string, @color и т. д.

Спасибо

Редактировать: Хорошо, похоже, вы должны ссылаться на него, как обычно, но консоль в eclipse выдает мне эту ошибку:

Ошибка: не найден ресурс, соответствующий заданному имени (в «теме» со значением «@style/ThemeName»).

(facepalm) Изменить

Мне просто нужно было «Очистить проект» в Eclipse. Теперь это работает.


person cottonBallPaws    schedule 30.01.2011    source источник
comment
В книге Android, которую я читаю, говорится, что вы можете/должны ссылаться на другой ресурс как @[packagename.]type/id, где имя пакета, если не указано, если текущий пакет приложения, и вы можете использовать имя страницы вашего проекта библиотеки . НО, у меня это не работает, как и очистка проекта и пересборка :-(   -  person Andrew Mackenzie    schedule 08.10.2012
comment
@Andrew Эндрю Вам не нужно указывать такое имя пакета. Если ресурс находится в вашем библиотечном проекте, вы можете просто ссылаться на него, как если бы он был в вашем собственном проекте.   -  person cottonBallPaws    schedule 08.10.2012
comment
Примечание. Первая ссылка устарела.   -  person user905686    schedule 14.09.2016


Ответы (4)


Важно собрать проект после добавления ресурсов (или просто включить автоматическую сборку), и в большинстве случаев помогает очистка проекта. Перезапуск Eclipse, когда «что-то» пойдет не так, тоже хорошая идея.

Также обратите внимание, что Android объединяет ресурсы, поэтому последний построенный проект «выигрывает» имя. По этой причине рекомендуется каким-то образом префиксировать ВСЕ ресурсы.

person Rafael T    schedule 06.10.2011
comment
Хотя ваше решение не решило мою конкретную проблему (см. мое редактирование в вопросе о том, как была решена моя проблема), похоже, ваш ответ помог другим, которые нашли свой путь к этому вопросу. Поэтому я отмечу ваш ответ как принятый. - person cottonBallPaws; 21.05.2012

Я использую IntelliJ, и у меня сработало обычное обращение к ресурсу и добавление библиотеки в качестве зависимости от проекта.

person AlanKley    schedule 20.10.2013

Я только что столкнулся с той же проблемой, однако очистка в Eclipse не работала, пока я не установил для проекта библиотеки и обычного проекта соответствие: Target Build Property.

person nicordesigns    schedule 02.04.2013

У меня только что была эта проблема в Android Studio. Кажется, Android Studio не осознавала, что мой библиотечный проект был библиотекой, несмотря на то, что в project.properties указано android.library=true.

Я исправил эту проблему, установив флажок «Является библиотекой» в структуре проекта.

введите здесь описание изображения

person bencallis    schedule 08.09.2013