Не удается найти Theme.AppCompat.Light для новой поддержки Android ActionBar
Я пытаюсь внедрить новую библиотеку поддержки ActionBar, выпущенную Google пару дней назад. Раньше я успешно реализовал ActionBarSherlock без каких-либо проблем, используя тот же метод, который указан на странице Support Library Setup - с помощью руководства по включают ресурсы (что похоже на то, как это сделал ActionBarSherlock). У меня есть проект библиотеки, загруженный в мой собственный проект в качестве библиотеки.
Я могу сказать, что библиотека отлично загружается. Когда вместо расширения Activity на моем MainActivity.java я изменил его, чтобы расширить ActionBarActivity (согласно инструкциям Google), ошибок не возникает - и он правильно импортирует.
Я даже попытался обойти файл style.xml и добавить @style/Theme.AppCompat.Light
непосредственно в AndroidManifest.xml для <application>
и <activity>
с помощью android:theme="@style/ThemeAppCompat.Light"
со всеми попытками, приводящими к той же ошибке.
Теперь проблема заключается в том, что я не могу заставить ее изменить тему, не говоря уже о том, чтобы даже строить, не вызывая ошибки. Ниже приведена ошибка, за которой следует файл style.xml, который я изменил, чтобы использовать новую тему.
У меня средний опыт работы с приложениями Android, и я запускаю Eclipse с последней версией библиотек поддержки и SDK, скомпилированных с API 18 (Android 4.3).
Полученная ошибка при сборке
error: Ошибка получения родительского элемента для элемента: ресурс не найден, который соответствует указанному имени '@style/Theme.AppCompat.Light'. styles.xml/ActBarTest/res/values line 3 Проблема AAPT для Android
style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.ProsoftStudio.ACTest" parent="@style/Theme.AppCompat.Light">
</style>
</resources>
Любые предложения? Это никогда не было проблемой для ActionBarSherlock. Я хочу работать над этой новой библиотекой поддержки. Похоже, что .jar загружается, но не ресурсы.
Ответы
Ответ 1
Вам нужно сделать следующее:
-
File->Import (android-sdk\extras\android\support\v7)
. Выберите "AppCompat"
-
Project-> properties->Android.
В библиотеке разделов "Добавить" и выберите "AppCompat"
- Вот и все!
Примечание. Если вы используете "андроид: showAsAction" в пункте меню, вам нужно изменить префикс андроида, как в примере http://developer.android.com/guide/topics/ui/actionbar.html
Ответ 2
Если, как и я, вы следуете руководству Android на http://developer.android.com/training/basics/actionbar/setting-up.html и продолжаете получать эту ошибку, попробуйте изменить стиль AppBaseTheme
во всех styles.xml
файлы. Подробнее:
-
В файле res/values/styles.xml
измените строку:
<style name="AppBaseTheme" parent="android:Theme.Light">
в
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
-
В файле res/values-v11/styles.xml
измените строку:
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
в
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
-
В файле res/values-v14/styles.xml
измените строку:
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
в
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
Теперь приложение должно работать нормально.
Ответ 3
Я поделюсь своим опытом с этой проблемой. Из-за этого я сходил с ума, но я узнал, что проблема была ошибкой с самим Eclipse, а не с моим кодом:
В eclipse не удалось ссылаться на проект библиотеки Android в другом проекте Android
Итак, если у вас есть библиотека поддержки Android на вашем диске C: и ваш проект на диске D: на вашем компьютере, Eclipse будет работать неправильно и не будет знать, где находится библиотека поддержки Android (зеленый тик становится в красный крест). Чтобы решить эту проблему, вам нужно переместить оба проекта на один и тот же жесткий диск.
Ответ 4
Это проблема, которая может произойти в Android Studio, если вы изменяете модули структуры проекта.
В этом случае вам может понадобиться снова добавить зависимости. В текстовом редакторе отредактируйте файл 'build.gradle', чтобы включить необходимые зависимости:
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Это должно обновить файл '{your_project_name}.iml' с помощью компонентов lib:
<orderEntry type="library" exported="" name="appcompat-v7-19.0.1" level="project" />
Ответ 5
Я сделал следующее в Eclipse с помощью библиотеки поддержки Android (APL) и основного проекта ( MP):
-
Убедитесь, что APL и MP имеют те же minSdkVersion
и targetSdkVersion
.
-
Добавлен APL как зависимость от сборки для MP:
-
В свойствах MP в разделе "Android" добавлена ссылка на APL в библиотеке.
1 и 2 получили ссылки на классы Java, отлично работающие... однако я все еще видел ошибку в manifest.xml
для MP при попытке ссылки @style/Theme.AppCompat.Light
на APL. Это только ушло, когда я выполнил шаг 3.
Ответ 6
Его немного поздно, но вот как я это делаю в AndroidStudio!
Щелкните правой кнопкой мыши на приложении для свойств goto
![Right click on app to goto properties]()
Перейдите в Зависимости и нажмите на значок "+" и выберите зависимость библиотеки
Выберите appcompat-v7
![Choose appcompat-v7]()
Ответ 7
Решение IntelliJ IDEA.
1. Запустите Android SDK Manager и установите последнюю версию SDK и поддержку Android Libarary. Версия поддержки SDK и Android Libarary должна быть той же! 23 в моем случае. Другие варианты дадут вам ошибки.
2. Измените версию SDK проекта IDEA на последнюю, установленную на предыдущем шаге. (ps. вы не можете использовать Maven).
![введите описание изображения здесь]()
3. Добавьте новый модуль из существующих источников в проект IDEA.
![введите описание изображения здесь]()
4. Добавить проект AppCompat. !!! Должен быть и под последним SDK! (ps. Скажите "Да" в любом месте этого шага)
![введите описание изображения здесь]()
5. Откройте настройки основного модуля проекта и добавьте к нему следующие 3 зависимости:
5.1. Зависимость модуля. Выберите android-support-v7-appcompat
![введите описание изображения здесь]()
5.2. 2 шт. Зависимости библиотек. Добавьте android-sdk\extras\android\support\v7\appcompat\libs\android-support-v4.jar и поддержка android-support-v4\android-support-v7-appcompat.jar
![введите описание изображения здесь]()
В общей сложности это будет:
![введите описание изображения здесь]()
6. Очень важно!!!. Добавьте тему с префиксом @style (не другим!).
![введите описание изображения здесь]()
Решение для Android Studio.
1. Запустите Android SDK Manager и установите последнюю версию SDK и поддержку Android Libarary. Версия поддержки SDK и Android Libarary должна быть той же! 23 в моем случае. Другие варианты дадут вам ошибки.
2. Добавьте рядом с build.gradle
dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
}
P.S. Если вы новичок в разработке Android, я настоятельно рекомендую вам перейти на Android Studio и Gradle прямо сейчас - вы получите самый простой способ управления своим Android-приложением.
Ответ 8
Для Android Studio 1.2.2
Отбросьте "андроид" из значения атрибута parent
:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
Ответ 9
вам нужна ссылка $ANDROID_SDK/extras/android/support/v7/appcompat
Ответ 10
Для IntelliJ IDEA или Android Studio:
Добавьте это в файл сборки app.gradle
dependencies {
compile "com.android.support:appcompat-v7:21.0.+"
}
Замените -v:xx.0+
своей целью сборки, если у вас 19 платформ
то это должно быть как:
dependencies {
compile "com.android.support:appcompat-v7:19.0.+"
}
Ответ 11
Следуйте инструкциям @rcdmk.
Удалите поддержку android v4.jar в ВАШЕМ проекте. Он конфликтует с новой обновленной версией, найденной в appcompat.
Ответ 12
Моя проблема устранена с помощью следующих шагов
Ответ 13
У меня была такая же проблема, и я потратил 4-5 часов на решение. Моя проблема решена с помощью
- От менеджера SDK удалите пакеты "Android Support Library" и "Android Support Repository".
- Переустановите "Android Support Library" и "Android Support Repository"
- Удалите "android-support-v7-appcompat" или "appcompat_v7", что у вас есть в вашем проекте.
- Импорт android-support-v7-appcompat из "adt-bundle-windows-x86_64-20140702\sdk\extras\android\support\v7\appcompat"
- Выберите свой проект и из файла выберите свойства и найдите Java Build Path, а затем со вкладки "Project" удалите то, что еще там добавляет. и вы должны увидеть "android-support-v7-appcompat", выберите и добавьте его на вкладку "Проект".
- Проверьте файл project.properties под файлами Project, вы увидите следующее:
целевой = андроид-21
android.library.reference.1 =../Android-поддержка-v7-AppCompat
затем проверьте файл AndroidManifest.xml, если цель равна 21 или что вы выбрали. Также проверьте, что ссылка на библиотеку такая же, как и выбранная ранее библиотека.
Надеюсь, вы найдете свое решение.
Ответ 14
работы:
<style name="MyApp" parent="Theme.AppCompat.Light">
</style>
<style name="MyApp" parent="@style/Theme.AppCompat.Light">
</style>
<style name="Theme.AppCompat.Light.MyApp">
</style>
Ответ 15
Поскольку в диалоговом окне "Импорт" отличается от Android Studio 1.0.1, я не смог бы использовать версию Святослава Лобаха.
Вместо этого я загрузил "Репозиторий поддержки Android" в диспетчере SDK. Затем добавили
dependencies {
...
compile "com.android.support:appcompat-v7:18.0.+"
}
до build.gradle
. Работал для меня.
Ответ 16
http://developer.android.com/tools/support-library/setup.html имеет ошибку.
В Property- > Java build path → 'Project' и 'Order and Export' не должно быть никаких jar.
Удаление их и проверка "Android Private Libraries" и "Android Dependencies" решили мою проблему.
Ответ 17
Я испытал ту же проблему, что и OP после щелчка правой кнопкой мыши по моему проекту и выбора Закрыть не связанные проекты.
В моем случае я решил проблему, повторно открыв проект appcompat_v7 и очистив/перестроив оба проекта.
Ответ 18
Это случилось со мной, когда Eclipse (Luna)/AndroidSDK (а не Android Stduio) были использованы с новейшими инструментами и библиотекой по состоянию на 14 января 2015 года во время проекта, такого как HelloWorld. Когда я установил эти инструменты и сделал HelloWorld первым приложением, я принял все значения по умолчанию. - Это проблема в моем случае.
Сначала проверьте, установлена ли библиотека "Библиотека поддержки Android".
Если нет, установите его. По умолчанию он не установлен.
Вы можете сделать все это в "Android SDK manager", доступном в меню.
(Android SDK Manager → Extra → Android Support Library)
Благословения,
(должник) < < <
Ответ 19
Самое быстрое решение:
щелкните правой кнопкой мыши по проекту → Инструменты Android → Добавить библиотеку поддержки.
![enter image description here]()
Ответ 20
Я сделал для этого глупую ошибку. Когда я получал такую же ошибку каждый раз, когда я не мог понять, что случилось. то он щелкнул меня, когда я закрыл все проекты на своем рабочем пространстве, и это было время, когда все проблемы начались. Просто проверьте, не закрыт ли ваш "appcompat_v7". Если затем открыть проект двойным щелчком, а затем очистить и снова создать проект. В моем случае ошибки исчезли. Счастливое кодирование!
Ответ 21
Я не уверен, была ли доступна библиотека поддержки v13, когда этот вопрос был опубликован, но если кто-то все еще борется, я видел, что добавление android-support-v13.jar
будет исправлять все.
Вот как я это сделал:
- Щелкните правой кнопкой мыши по проекту → Свойства
- Выберите путь сборки Java из таблицы содержимого слева.
- Перейдите на вкладку "Библиотеки".
- Добавьте кнопку внешних баннеров и выберите
<your sdk path>\extras\android\support\v13\android-support-v13.jar
Ответ 22
Для Android Studio или IntelliJ все, что вам нужно сделать, это обновить свои зависимости в gradle.build. Я использовал следующее:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.2'
}
Ответ 23
Я не знаю, как многие из вас это заметили. Библиотека поддержки "appcompat_v7" и ваш проект должны находиться в одном каталоге (я имею в виду каталог рабочей области). Не очищайте свой проект до тех пор, пока его ошибка не станет свободной. У вас будет непростое время с R.java.
Ответ 24
Вам лучше создать новый проект с любым именем, а затем использовать appcompat_v7, чтобы программа создала новую.
Right Click Project-> properties->Android
В библиотеке разделов Add
и выберите библиотеку appcompat.
Ответ 25
в eclipse щелкните правой кнопкой мыши на вашем проекте- > выберите путь сборки, а затем выберите configure build path. из окна выберите файл jar, который вы хотите, и обновите проект
Ответ 26
Принятое решение раньше меня работало, но не сейчас. Мне пришлось воссоздать мир приветствия такого же вида (!) В новом рабочем пространстве, скомпилировать его и скопировать все каталоги, включая .hg
и .hgignore
.
hg diff
показывает:
- android:targetSdkVersion="19" />
+ android:targetSdkVersion="21" />
Binary file libs/android-support-v4.jar has changed
Похоже, Eclipse хочет скомпилировать API 21 и ничего не делает с API 19. Темно.
Ответ 27
Если вы добавили библиотеку AppCompat и указали надлежащую ссылку appCompat из местоположения SDK, попробуйте "invalidate cache/Restart".
Вы можете найти его в меню "Файл" в Android Studio.
Ответ 28
В моем случае проблема возникла, так как я хотел использовать SDK, который не включает нужную библиотеку. Когда я увеличил мин. SDK проблема исчезла. Разумеется, напрямую, включая самую библиотеку, также следует удалить эту ошибку.
Ответ 29
Забудьте все. Просто используйте библиотеку appcompat, загруженную с помощью Android Studio. В нем есть все недостающие определения. Независимо от того, используете ли вы в Eclipse или нет.
Ответ 30
У меня была такая же проблема, и даже после импорта/добавления jar/library, как упоминалось в ответах, это не решило бы ошибку. Из-за разочарования я только что создал новое рабочее пространство и создал новый проект андроида, и он автоматически импортировал appcompat_v7, и ошибок в чистом и сборке не было. Не нужно было импортировать отдельную банку/библиотеку вручную. Просто FYI Я использую eclipse Mars.1 Release (4.5.1) и столкнулся с одной и той же проблемой каждый раз, когда я создал новый проект андроида.