Невозможно добавить файл типа ресурса идентификатора в проект библиотеки Android - PullRequest
4 голосов
/ 20 января 2012

В моем приложении для Android я создал 2 проекта.Основной проект и библиотечный, так как он будет использоваться и в будущих проектах.Поскольку я хотел бы сослаться на некоторые представления в коде, я попытался создать файл типа ресурса, чтобы объявить некоторые уникальные идентификаторы, как указано здесьЗначения (называемые ids.xml) файла R больше не генерируются.Когда я его удаляю все работает нормально.

Я знаю, что могу добавить файл типа ресурса id в проект Android.Есть ли ограничение делать то же самое в библиотечном проекте?

Спасибо, Билл

Ответы [ 2 ]

5 голосов
/ 20 января 2012

После 2 дней исследований я наконец нашел решение.

Пост [здесь] [1]

[1]: Ошибка компиляции ресурсов в стиле Android (aapt): неверная таблица ресурсов: размер заголовка 0xc помог мне.

Неважно, является ли это проектом Android или библиотечным, но когда вы объявили новый идентификатор в одном из ваших стилей, вы не можете добавить файл ids.xml для объявления уникальных идентификаторов.

В моем случае, я объявил стиль в моем res / values ​​/ styles.xml

<style name="ActionBar">
        <item name="android:id">**@+id/actionbar_container**</item>
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">@dimen/actionbar_height</item>
        <item name="android:orientation">horizontal</item>
        <item name="android:background">@drawable/actionbar_gradient</item>
    </style>

, а затем добавил файл res / values ​​/ ids.xml, где я объявил несколько уникальных идентификаторов. Например,

<resources>
<item type="id" name="menu_refresh" />
</resources>

После добавления этого файла R перестала генерировать. Проект Чистый не сделал работу.

Когда я изменил объявление в styles.xml на @ id / actionbar_container, R снова начал генерировать. Разница заключается в том, что я объявил идентификатор в своем файле ids.xml, в то время как я ссылаюсь в указанном выше стиле, используя @ id, а не @ + id.

Вывод: Если вы хотите объявить уникальные идентификаторы в файле ресурсов (т.е. ids.xml), дважды проверьте, что вы не объявили никаких новых идентификаторов (используя синтаксис @ + id) в своих стилях.

Надеюсь, это поможет кому-то с такой же проблемой.

Удачного кодирования !!!

0 голосов
/ 05 февраля 2013

На всякий случай, как это случилось со мной ... Я потратил минуты, пытаясь понять, почему мой "R.id.myid" не может быть найден в Java-файле после создания его как элемента идентификатора ресурса:

<resources>
<item type="id" name="myid" />
</resources>

=> Проблема заключалась в том, что мой java-файл импортировал «android.R» вместо моего «R» (сгенерированного файла ресурсов).

import android.R;

Звучит глупо, но это может случиться.

import xxxx.xxxx.R;
...