Не вдається знайти Theme.AppCompat.Light для нової підтримки Android ActionBar


354

Я намагаюся реалізувати нову бібліотеку підтримки ActionBar, яку було випущено Google пару днів тому. Раніше я успішно впроваджував ActionBarSherlock без жодних проблем, використовуючи той самий метод, який вказаний на сторінці налаштування бібліотеки підтримки розробника Google - використовуючи посібник щодо включення ресурсів (подібний до того, як це робив ActionBarSherlock). У мене проект бібліотеки завантажений і в мій власний проект, як бібліотека.

Я можу сказати, що бібліотека добре завантажується. Коли замість розширення діяльності на моєму 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". style.xml / ActBarTest / res / values ​​line 3 Проблема Android AAPT

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, і він не виправив жодної проблеми.
Брендон Енрікес

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

@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". Хтось?
shahar eldad

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 -v7-appcompat.
Джон Бентлі

У res/values/styles.xmlновому проекті Android немає. Принаймні, не тоді, коли ви створюєте його android create project.
weberc2

Ви отримуєте styles.xml, коли створюєте проект за допомогою майстра, виберіть програму в повноекранному режимі та
прихойте

8
Нічого не працює для мене ... 4 години вже витрачені даремно. Я все ще не знайшов жодного ресурсу, який би відповідав заданому імені (у "темі" зі значенням "@ 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, а не з моїм кодом: У затемненні не вдається посилатись на проект бібліотеки для Android в іншому проекті для Android

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


4
Дякую. Так було у моїй ситуації. На кроці 1 (Файл-> Імпорт (android-sdk \ extras \ android \ support \ v7). Виберіть "appcompat"), потрібно встановити прапорець "Скопіювати в робочу область".
Гонг

Я зіткнувся з подібною проблемою. Велике спасибі, це було справді хитро
SILINIK

Той самий випуск в AndroidStudio. Я просто витратив, як 3 години, намагаючись зрозуміти це. Дякую!
Рубен Мартинес-молодший

Юп. Можу підтвердити це. У IntelJ є точно така ж проблема, принаймні з AppCompat ... витрачала 4 години на цю проблему.
puelo

Це було рішенням і для мене. Копіювання проекту appcompat_v7 на той же диск, що і цільовий проект, і додавання його як lib змусило його працювати без проблем.
MayaPosch

23

Я зробив наступне в Eclipse з проектом Android Support Library ( 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.xmlпротягом МПА при спробі посилання @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 Support Libarary . Версія SDK та Android Support Libarary повинна бути однаковою ! 23 в моєму випадку. Інші варіанти дадуть вам помилки. 2. Змініть версію SDK вашого проекту IDEA на останню, яку ви встановили на попередньому кроці. (ps. ви не можете використовувати Maven).
введіть тут опис зображення

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

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

4. Додати проект AppCompat. !!! Має бути і під останнім SDK! (ps. скажіть "Так" в будь-якій точці цього кроку)
введіть тут опис зображення

5. Відкрийте налаштування вашого основного модуля проекту та додайте до нього наступні 3 залежності:

5.1. Залежність модуля Вибрав андроїд-підтримку-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 Support Libarary . Версія 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 про андроїд
Alex Jolig

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 під файлами проекту, ви побачите так; target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat, тоді перевірте файл AndroidManifest.xml, якщо ціль 21 чи що ви вибрали. Також перевірте, чи немає у бібліотеці посилання, яке ви вибрали раніше.

Сподіваюся, ви знайдете своє рішення.


1
Що мені допомогло - оновити мою бібліотеку підтримки Android за допомогою диспетчера SDK, видалити стару бібліотеку додатків із робочої області, повторно імпортувати оновлену бібліотеку додатків (і скопіювати у робочу область), а потім створити.
Варун

3

Моя проблема вирішується, виконавши наступні кроки

  1. Файл-> Імпорт (android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. Клацніть правою кнопкою миші Проект-> Властивості-> 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. Потім додали

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

до build.gradle. Працювали для мене.


1

http://developer.android.com/tools/support-library/setup.html має помилку. У Властивості-> Java-конфігурація Java -> 'Проект' та 'Замовлення та експорт' не повинно бути жодних баночок. Видалення їх та перевірка "Приватні бібліотеки Android" та "Залежності Android" вирішили мою проблему.


1

Я зіткнувся з тією ж проблемою, що і з ОП, після клацання правою кнопкою миші на моєму проекті та вибору Закрити незв’язані проекти .

У моєму випадку я вирішив проблему, повторно відкривши проект appcompat_v7 та очистивши / відновивши обидва проекти.


1

Сталося зі мною, коли Eclipse (Luna) / AndroidSDK (не Android Stduio) станом на 14 січня 2015 року під час такого проекту, як HelloWorld, використовувалися новітні інструменти та бібліотека. Коли я встановив ці інструменти і зробив HelloWorld першим додатком, я прийняв усі параметри за замовчуванням. - У цьому проблема в моєму випадку.

Спочатку перевірте, чи встановлена ​​бібліотека «Бібліотека підтримки Android». Якщо ні, встановіть його. Він не встановлений за замовчуванням. Ви можете зробити все це в "Менеджері SDK для Android", доступному в меню.

(Диспетчер SDK для Android -> Додатково -> Бібліотека підтримки 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виберіть бібліотечний додаток.


0

у затемненні клацніть правою кнопкою миші на вашому проекті-> виберіть шлях складання, а потім виберіть конфігурувати шлях збірки. у вікні виберіть потрібний файл баночки та оновіть проект


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

У мене була та сама проблема, і навіть після імпорту / додавання баночки / бібліотеки, як зазначено у відповідях, помилка не вирішить. Не розчарувавшись, я просто створив нову робочу область і створив новий проект для Android, і він автоматично імпортував appcompat_v7, і помилок очищення та збирання не було. Не потрібно було імпортувати одну банку / бібліотеку вручну. Просто FYI Я використовую eclipse Mars.1 Release (4.5.1) і стикався з точно такою ж проблемою кожного разу, коли я створював новий проект для Android.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.