Не удается найти Theme.AppCompat.Light для новой Android ActionBar Поддержка


354

Я пытаюсь реализовать новую библиотеку поддержки ActionBar, которая была выпущена Google пару дней назад. В прошлом я успешно реализовывал ActionBarSherlock без каких-либо проблем, используя тот же метод, который указан на странице настройки библиотеки поддержки Google Developer - используя руководство о том, как включить ресурсы (что аналогично тому, как это делал 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).

Ошибка, полученная во время сборки

ошибка: ошибка при получении родительского элемента: не найден ресурс, который соответствует указанному имени '@ 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
Попробуйте очистить проект, возможно, вам нужно перезагрузить зависимости, чтобы стили из AppCompact также могли перезагрузиться
TheWizKid95

2
@ TheWizKid95 Я очистил свое приложение, которое пытаюсь реализовать, и библиотеку. Ни один из них не привел к изменению кода в соответствии с Eclipse, и это не решило ни одной из проблем.
Брэндон Энрикес

Вы добавили поддержку библиотеки с ресурсами? Добавить банку в libs недостаточно.
Габриэле Мариотти

@GabrieleMariotti Да, я добавил ресурсы, а также библиотеку проектов, специально по указанию Google.
Брэндон Энрикес

Что работало для меня, так это добавление его в качестве проекта в рабочую область. Просто импортировать банку и добавить их в buildpath не получилось.
Йохан

Ответы:


386

Вам нужно сделать следующее:

  1. File->Import (android-sdk\extras\android\support\v7), Выберите «AppCompat»
  2. Project-> properties->Android. В разделе библиотеки «Добавить» и выберите «AppCompat»
  3. Это все!

Примечание: если вы используете «android: showAsAction» в пункте меню, вам нужно изменить префикс android, как в примере http://developer.android.com/guide/topics/ui/actionbar.html


65
Это не работает для меня. Я делаю именно то, что написано здесь, но в итоге я обнаружил, что не найдено ни одного ресурса, соответствующего именным ошибкам. Ресурсы, которые отсутствуют, являются стилями, включенными в API 11 и выше, но эта штука должна работать из API 7. Есть ли какое-то соединение, которое я пропустил!?!
Апокалипсис

5
Имея подобную проблему, тема Theme.AppCompat.Light.NoActionBar не существует в моей библиотеке appcompat.
JMRboosties

9
Под File-Import я не могу найти 'android-sdk'. Я вижу только «andoird». Кто-нибудь?
Шахар Эльдад

2
apocalypz, я думаю, что вам не хватает ресурсов, потому что вы импортировали библиотеку без ресурсов. вот ссылка на «Добавление библиотек с ресурсами» developer.android.com/tools/support-library/...
Hades200621

1
Следующие шаги + добавление sdk \ extras \ android \ support \ v13android-support-v13.jar в каталог проекта libs решит проблему.
Васим А.

119

Если, как и я, вы следуете учебнику по Android по адресу http://developer.android.com/training/basics/actionbar/setting-up.html и продолжаете получать эту ошибку, попробуйте изменить AppBaseThemeстиль во всех styles.xmlфайлах. В деталях:

  1. В файле res/values/styles.xmlизмените строку:

    <style name="AppBaseTheme" parent="android:Theme.Light">

    чтобы:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  2. В файле res/values-v11/styles.xmlизмените строку:

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">

    чтобы:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  3. В файле res/values-v14/styles.xmlизмените строку:

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">

    чтобы:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

Теперь приложение должно работать нормально.


11
Да, это сработало для меня. Главное, на что нужно обратить внимание, это то, что в родительском атрибуте префиксы «android:», встроенные в темы (стили), в то время как значение без этого префикса ссылается на ваши собственные стили или стили в любых библиотеках, с которыми вы связаны ..., таких как android-support -v7-AppCompat.
Джон Бентли

Нет res/values/styles.xmlв новом проекте Android. По крайней мере, не при создании android create project.
weberc2

Вы получаете файл styles.xml при создании проекта с помощью мастера, выбираете полноэкранное приложение и скрываете элементы управления
JJ_Coder4Hire

8
У меня ничего не работает ... 4 часа уже потрачены впустую. Я все еще получаю Ресурс не найден, который соответствует данному имени (в 'theme' со значением '@ style / Theme.AppCompat.Light'). Просто собираюсь сдаться.
c.fogelklou

2
Я просто изменил их по-другому, и действительно, так было в моем проекте.
Джон

28

Это проблема, которая может возникнуть в 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" />

1
Имейте в виду, есть 2 * .iml файлы. Тот, что содержит записи библиотеки, содержится в подпапке проекта и имеет строчное имя файла.
Дэвид Дуглас

2
Это исправило мою проблему. добавление appcompat к зависимостям во внутреннем build.gradle сработало. С сожалением могу сказать, что я редактировал вручную, чтобы соответствовать другому проекту, который сломал вещи!
JJ_Coder4Hire

28

Я поделюсь своим опытом с этой проблемой. Я сходил с ума из-за этого, но я обнаружил, что проблема была в самой ошибке Eclipse, а не в моем коде: в eclipse невозможно ссылаться на проект библиотеки Android в другом проекте Android

Итак, если у вас есть библиотека поддержки Android на вашем диске C: и ваш проект на диске D: на вашем компьютере, Eclipse не будет работать правильно и не будет знать, где находится библиотека поддержки Android (зеленая галочка превращается в красный крестик). ). Чтобы решить эту проблему, вам нужно перенести оба проекта на один и тот же жесткий диск.


4
Спасибо. Это был случай моей ситуации. На шаге 1 (Файл-> Импорт (android-sdk \ extras \ android \ support \ v7). Выберите «appcompat»), необходимо проверить «копировать в рабочую область».
Гонконг

Я столкнулся с подобной проблемой. Большое спасибо, это было действительно сложно
SILINIK

Та же проблема в AndroidStudio. Я просто потратил 3 часа, чтобы понять это. Спасибо!
Рубен Мартинес младший

Юп. Могу подтвердить это .. У IntellJ точно такая же проблема, по крайней мере, с AppCompat ... потратил 4 часа на эту проблему.
Пуэло

Это было решением и для меня. Копирование проекта appcompat_v7 на тот же диск, что и целевой проект, и добавление его в качестве библиотеки lib позволило работать без проблем.
MayaPosch

23

В Eclipse я сделал следующее с проектом библиотеки поддержки Android ( APL ) и основным проектом ( MP ):

  1. Гарантировал, что и APL и MP имели то же самое minSdkVersionи targetSdkVersion.

  2. Добавлен APL как зависимость сборки для MP :

    1. Перейдите в «Свойства> Java Build Path» MP , а затем

    2. Выберите вкладку «Проекты» и добавьте APL .

  3. В свойствах MP , под «Android», добавлена ​​ссылка на APL под библиотекой.

1 и 2 получили ссылки на классы Java, работающие нормально ... однако я все еще видел ошибку в manifest.xmlfor MP при попытке ссылки @style/Theme.AppCompat.Lightиз APL . Это только ушло, когда я выполнил шаг 3.


9
Определенно используйте «@ style / Theme.AppCompat ...» вместо «@android: style / Theme.AppCompat ...». Этот плюс № 3 из этого ответа решил мою проблему.
BeccaP

Пункт 2 кажется неверным. Это приводит к сообщению журнала ошибок сборки, как описано и исправлено здесь: stackoverflow.com/questions/18421274/…
OneWorld

18

Немного поздно, но вот как я это делаю в AndroidStudio!

Щелкните правой кнопкой мыши приложение, чтобы перейти к свойствам Щелкните правой кнопкой мыши приложение, чтобы перейти к свойствам

Перейдите в Зависимости и нажмите на знак «+» и выберите библиотечную зависимость. Перейдите в Зависимости и нажмите на знак «+» и выберите библиотечную зависимость Выберите appcompat-v7. Выберите appcompat-v7


12

Решение IntelliJ IDEA.

1. Запустите Android SDK Manager и установите последнюю версию SDK и библиотеку поддержки Android . Версия SDK и Android Support Libarary должны быть одинаковыми ! 23 в моем случае. Другие варианты дадут вам ошибки. 2. Измените версию SDK вашего проекта IDEA на последнюю версию, установленную на предыдущем шаге. (ps. вы не можете использовать Maven).
введите описание изображения здесь

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

3. Добавьте новый модуль из существующего источника в ваш проект IDEA.
введите описание изображения здесь

4. Добавьте проект AppCompat. !!! Должно быть под последним SDK тоже! (ps. Скажите «Да» в любом месте в процессе этого шага)
введите описание изображения здесь

5. Откройте настройки вашего основного модуля Project и добавьте в него следующие 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 . Версия SDK и Android Support Libarary должны быть одинаковыми ! 23 в моем случае. Другие варианты дадут вам ошибки.
введите описание изображения здесь

2. Добавить рядом с build.gradle

dependencies {
    compile 'com.android.support:appcompat-v7:23.0.1'
} 

PS Если вы новичок в разработке для Android, я настоятельно рекомендую вам перейти на Android Studio & Gradle прямо сейчас - вы получите самый простой способ управления вашим Android-приложением.


Лучший ответ, который я когда-либо нашел в SO об
андроиде

10

Для Android Studio 1.2.2

Удалите «android» из parentзначения атрибута:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

7

вам нужна ссылка $ ANDROID_SDK / extras / android / support / v7 / appcompat


Вы не возражаете вдаваться в подробности, как именно на него ссылаться? Я уже ссылался на эту папку как на инструкции для разработчиков Android. Следуйте инструкциям точно так, как указано на их сайте. Я могу сказать, что на него ссылаются хотя бы частично, потому что ActionBarActivity расширяется без ошибок.
Брэндон Энрикес

3
ссылка appcompatна Android Library, ваш основной ресурс проекта может найти тему из appcompat
Crossle Song

Это добилось цели. Ранее я делал это в Java Build Path.
Брэндон Энрикес

5

Для 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.+"
}

3

Следуйте инструкциям @rcdmk. Удалите поддержку Android v4.jar в вашем проекте. Это противоречит новой обновленной версии, найденной в appcompat.


3

У меня была та же проблема, и я тратил 4-5 часов на решение. Моя проблема решена с помощью;

  1. Из менеджера SDK удалите пакеты «Библиотека поддержки Android» и «Репозиторий поддержки Android».
  2. Переустановите «Библиотеку поддержки Android» и «Репозиторий поддержки Android»
  3. Удалите «android-support-v7-appcompat» или «appcompat_v7», что еще есть в вашем проекте.
  4. Импортировать android-support-v7-appcompat из "adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat"
  5. Выберите ваш проект и в файле выберите свойства и найдите Java Build Path, а затем на вкладке «Project» удалите все остальное, а затем добавьте. и вы должны увидеть «android-support-v7-appcompat», выбрать и добавить его на вкладку Project.
  6. Проверьте ваш файл project.properties ниже ваших файлов Project, вы увидите вот так; target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat, а затем проверьте файл AndroidManifest.xml, если target равен 21 или что еще вы выбрали. Также проверьте ссылку на библиотеку так же, как ваша библиотека, которая была выбрана ранее.

Надеюсь, вы найдете свое решение.


1
Что мне помогло, так это обновить библиотеку поддержки Android с помощью менеджера SDK, удалить старую библиотеку appcompat из рабочей области, повторно импортировать обновленную библиотеку appcompat (и скопировать в рабочую область), а затем собрать.
Варун

3

Моя проблема решается с помощью следующих шагов

  1. Файл-> Импорт (android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. Щелкните правой кнопкой мыши Project-> properties-> Android. В разделе библиотеки «Добавить» и выберите библиотеку appcompat, включаемую в шаг 1
  3. Удалить все файлы из каталога проекта libs
  4. добавить следующий файл в каталог libs проекта <SDK-PATH>\extras\android\support\v13android-support-v13.jar

    Перезапустите Eclipse, если требуется. Вот и все. Ваша проблема должна исчезнуть.


рад, что это помогает кому-то :)
Васим А.

2

работает:

<style name="MyApp" parent="Theme.AppCompat.Light">
</style>
<style name="MyApp" parent="@style/Theme.AppCompat.Light">
</style>
<style name="Theme.AppCompat.Light.MyApp">
</style>

2

Поскольку диалог импорта в Android Studio 1.0.1 отличается, я не смог заставить работать версию Святослава Лобачса.

Вместо этого я загрузил «Репозиторий поддержки Android» в SDK Manager. Потом добавил

dependencies {
...
compile "com.android.support:appcompat-v7:18.0.+"
}

к build.gradle. Работал на меня.



1

Я столкнулся с той же проблемой, что и ОП, после того, как щелкнул правой кнопкой мыши мой проект и выбрал « Закрыть несвязанные проекты» .

В моем случае я решил проблему, повторно открыв проект appcompat_v7 и очистив / перестроив оба проекта.


1

Это случилось со мной, когда Eclipse (Luna) / AndroidSDK (не Android Stduio) использовались с последними инструментами и библиотекой по состоянию на 14 января 2015 года во время проекта наподобие HelloWorld. Когда я установил эти инструменты и сделал HelloWorld первым приложением, я принял все настройки по умолчанию. - Это проблема в моем случае.

Сначала проверьте, установлена ​​ли библиотека «Библиотека поддержки Android». Если нет, установите его. Он не установлен по умолчанию. Вы можете сделать все это в «Android SDK manager», доступном в меню.

(Android SDK Manager -> Дополнительно -> Библиотека поддержки Android)

Благословение, (должник) <> <


1

Самое быстрое решение:

щелкните правой кнопкой мыши на проекте -> Инструменты Android -> Добавить библиотеку поддержки.

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


0

Я сделал действительно глупую ошибку за это. Когда я каждый раз получал одну и ту же ошибку, я не мог понять, в чем дело. затем меня щелкнуло, что, как только я закрыл все проекты в своем рабочем пространстве, это было время, когда начались все проблемы. Так что просто проверьте, не закрыт ли ваш appcompat_v7. Если это так, откройте проект двойным щелчком, а затем очистите и соберите свой проект снова. В моем случае ошибки исчезли. Удачного кодирования!


0

Я не уверен, была ли доступна библиотека поддержки v13, когда этот вопрос был опубликован, но в случае, если кто-то все еще борется, я видел, что добавление android-support-v13.jarисправит все. Вот как я это сделал:

  1. Щелкните правой кнопкой мыши на проекте -> Свойства
  2. Выберите Java Build Path из левой части таблицы содержимого.
  3. Перейти на вкладку "Библиотеки"
  4. Нажмите кнопку Добавить внешние банки и выберите <your sdk path>\extras\android\support\v13\android-support-v13.jar

0

Для Android Studio или IntelliJ все, что вам нужно сделать, это обновить ваши зависимости в gradle.build. Я использовал следующее:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.2'
}

0

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


0

Вам лучше создать новый проект с любым именем, а затем использовать appcompat_v7, чтобы программа создала новый.

Right Click Project-> properties->Android

В разделе библиотеки Addи выберите библиотеку appcompat.


0

в eclipse щелкните правой кнопкой мыши ваш проект-> выберите путь сборки и затем выберите настроить путь сборки. Из окна выберите файл JAR, который вы хотите, и обновите свой проект


0

Принятое решение раньше работало на меня, но не сейчас. Мне пришлось воссоздать привет-мир того же вида (!) В новом рабочем пространстве, заставить его скомпилировать, а затем скопировать все каталоги, включая .hgи .hgignore. hg diffшоу:

-        android:targetSdkVersion="19" />
+        android:targetSdkVersion="21" />

Binary file libs/android-support-v4.jar has changed

Похоже, Eclipse хочет скомпилировать для API 21 и ничего не делает с API 19. Темно.


0

Если вы добавили библиотеку appCompat, а также указали правильную ссылку на appCompat из расположения SDK, попробуйте «сделать недействительными кэши / перезапустить» .
Вы можете найти его в меню «Файл» в Android Studio.


0

В моем случае проблема возникла, так как я хотел использовать SDK, который не включает необходимую библиотеку. Когда я увеличил мин. Уровень SDK проблема исчезла. Разумеется, прямое включение самой библиотеки также должно устранить ошибку.


0

Забудь все. Просто используйте библиотеку appcompat, загруженную с помощью Android Studio. В нем есть все недостающие определения. Независимо от того, используете ли вы в Eclipse или нет.


0

У меня была та же проблема, и даже после импорта / добавления jar / библиотеки, как упомянуто в ответах, это не решило бы ошибку. Из-за разочарования я просто создал новое рабочее пространство и создал новый проект Android, который автоматически импортировал appcompat_v7, и при очистке и сборке не было ошибок. Не нужно было импортировать одну банку / библиотеку вручную. К вашему сведению, я использую Eclipse Mars.1 Release (4.5.1) и сталкиваюсь с одной и той же проблемой каждый раз, когда создавал новый проект для Android.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.