Theme.Holo в styles.xml с уровнем ‹ 11 вызывает ошибку проверки в Eclipse ADT

Я пытаюсь использовать альтернативные ресурсы / решение выбора темы находится здесь, чтобы переключиться на тему Holo на новых устройствах. Проект использует Android 2.1 в качестве цели сборки проекта.

Однако, если я помещу этот XML в res/values-v11/styles.xml

<resources>
    <style name="AppTheme" parent="@android:style/Theme.Holo" />
</resources>

Eclipse указывает на ошибку:

Ошибка при получении родителя для элемента: не найден ресурс, соответствующий заданному имени «@android:style/Theme.Holo». стили.xml /MyApp/res/values-v11

Манифест устанавливает следующие значения SDK:

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="15" />

Я могу скомпилировать этот проект только в том случае, если для параметра Project Build Target установлено значение Android 3.0, но тогда он не будет работать на старых устройствах.

Таким образом, этот обходной путь селектора стиля нельзя использовать с Eclipse ADT. Является ли это ошибкой в ​​Eclipse ADT, не должен ли ADT игнорировать v11 styles.xml?


Обновление: я мог бы использовать обходной путь и установить содержимое файла в

<resources>
    <style name="AppTheme" parent="@android:style/Theme" />
</resources>

чтобы активировать тему по умолчанию.


person mjn    schedule 30.08.2012    source источник


Ответы (2)


Вы можете запустить приложение на Android 3.0‹, если вы установите android:minSdkVersion на более низкий API. Так что просто установите цель на уровень API 11+, но установите минимальный SDK на 10‹.

person Ahmad    schedule 30.08.2012
comment
см. мое редактирование, для minSdkVersion установлено значение 7, но Eclipse компилирует проект только в том случае, если я использую библиотеки Android 3.0 - person mjn; 30.08.2012
comment
вы можете скомпилировать с библиотеками Android 3.0, если вы установите minsdkversion на предпочитаемый вами API - person Ahmad; 30.08.2012
comment
Я принял ваш ответ (для дополнительных советов по проблемам с целевым устройством) - person mjn; 30.08.2012

Установка цели на 3.0 не ограничит ее запуск на старых устройствах. Это будет minSDKVersion. Установка цели на 11+ просто позволяет вам получить доступ к функциям, которые есть только в 11+. Вам просто нужно быть осторожным, чтобы не использовать какие-либо функции в коде, использующем уровень API 11+. Одним из возможных решений для вас является поиск в HoloEverywhere, который дает вам темы Holo для API ‹11 вместе с ActionBar Sherlock для ActionBAr, которые намного превосходят библиотеки совместимости.

person Kaediil    schedule 30.08.2012
comment
см. мое редактирование, для minSdkVersion установлено значение 7, но Eclipse компилирует проект только в том случае, если я использую библиотеки Android 3.0 - person mjn; 30.08.2012
comment
Правильно. Так что используйте эти библиотеки, вот что я говорю. Он по-прежнему будет работать в более старых версиях ОС, если вы не используете вызовы API из более новых уровней API. - person Kaediil; 30.08.2012
comment
Если я установлю цель сборки проекта на 3.0, окно выбора устройства не позволит запустить приложение на устройстве 2.1. - person mjn; 30.08.2012
comment
Не уверен, в чем проблема. У меня есть приложение для сборки 4.1, и я без проблем запустил его на эмуляторе 2.1. Моя цель 15 и минимум 7. - person Kaediil; 30.08.2012
comment
Я предполагаю, что выбор показывает красный крест. Это не показатель совместимости вашего приложения или нет. Нажмите на эмулятор. я все равно буду бегать - person Ahmad; 30.08.2012
comment
@ Ахмад, да, это было так - красный крест заставил меня остановиться, теперь это работает, спасибо! - person mjn; 30.08.2012