it-swarm.com.ru

android исключение Studio SDK версии 22 во время рендеринга: action_bar

Когда я создаю новый проект в Android studio, это не создает никаких проблем. Однако, глядя на дизайн activity_main.xml, он показывает мне это:

Проблемы с рендерингом Исключение, возникающее при рендеринге: action_bar.

когда я меняю sdk level 22 на 21 со страницы дизайна Android studio ничего не показывает

Как я могу решить эту проблему? Это не важная проблема, но мне было интересно, как я могу это исправить.

51
Ali Aras

Да, просто нужно было настроить уровень Android в раскрывающемся списке. Предварительный просмотр вкладки дизайна на уровне API 22 сейчас не работает. Я посмотрел, что трассировка стека для ошибки, и это как-то связано с необходимостью альфа-канала. Я уверен, что Google исправит это в понедельник. :) enter image description here

96
Dave Fisher

ActionBar устарела в пользу панели инструментов, которая была добавлена ​​в API 21. Однако базовая тема для Android шаблонов Studio по-прежнему использует темы на основе ActionBar.

Решение не в том, чтобы понизить версию инструментов сборки, а в том, чтобы изменить базовую тему вашего приложения. Если вы прекратите использование инструментов сборки, вы упустите поддержку последних функций, добавленных в Android 5.1 и более поздних версиях.

Ваша базовая тема указана в AndroidManifest.xml в разделе application/Android: theme.

Перейдите в res/values ​​/ styles.xml и измените родительский атрибут на другую базовую тему, которая не зависит от устаревшего ActionBar. В маловероятном случае, если ваше приложение API 21+, вы можете использовать Theme.Material. В противном случае вам нужно будет использовать Theme.AppCompat.NoActionBar или определить свою собственную базовую тему.

Вот пример styles.xml:

<style name="AppTheme.Base" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

Если вы используете это, не забудьте поместить элемент панели инструментов в свои макеты XML, где вы хотите, чтобы появился ActionBar. Вам нужно настроить панель инструментов с дочерними тегами XML. Я рекомендую использовать тег <include>. Как говорится в документации панели инструментов, новые принципы дизайна Google требуют изменения визуального стиля:

В современных Android разработчикам пользовательского интерфейса следует больше полагаться на визуально отличную цветовую схему для панелей инструментов, чем на значок своего приложения. Использование значка приложения и заголовка в качестве стандартного макета не рекомендуется на устройствах с интерфейсом API 21 и новее.

Android.support.v7.widget.Toolbar находится в библиотеке поддержки для устройств до API 21.

Правка: Как первый комментарий указывает, у Google есть блог, объясняющий, как использовать новую панель инструментов. http://Android-developers.blogspot.kr/2014/10/appcompat-v21-material-design-for-pre.html

20
colintheshots

Извините за вопрос, ребята. Причина проблемы в том, что библиотека рендеринга теперь пытается использовать больше фактического кода из библиотеки appcompat, чтобы быть более точной. Однако это выявило некоторые ошибки в Android Studio, когда проект не собран.

Нет необходимости обновлять файлы Gradle или менять стили, как предлагают некоторые ответы.

Обходной путь - построить проект один раз, а затем обновить рендеринг, очистив кэш. См. Прикрепленное изображение для значка обновления, который очищает кэш.

Refresh Button Location

17
Deepanshu

Этот ответ работал для меня:

MyActivity extends AppCompatActivity

Вместо:

MyActivity extends ActionBarActivity   // now deprecated

Вернитесь к своему предварительному просмотру, очистите кэш и обновите!

4
Mark Keen

Через несколько дней разочарования я наконец узнал, что ответ лежит в build.gradle моего модуля приложения! Я изменил buildToolsVersion с 22 на 21.1.2, чтобы правильно разрешить это точное исключение, подобное вашему. Кажется, что-то связанное с API 22: Android 5.1 в настоящий момент дает сбой. Надеюсь, Google исправит это в ближайшее время.

Изменение этих строк в build.gradle дало мне быстрое решение этой проблемы:

Android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
}
1
Reynolds R. G. G.

Я исправил это, изменив buildToolsVersion "21.1.2" на build.gradle(Модуль: приложение),

Не используйте buildToolsVersion "22"

0
Oscar

Пожалуйста, используйте сборку API 21, чтобы увидеть предварительный просмотр. Я на Mac и сборка 22 сломан/не работает для меня. Когда я вернулся к сборке 21, я увидел предварительный просмотр.!

0
Pranav2579

Оказывается, вы не можете использовать buildToolsVersion "22" или targetSdkVersion 22, потому что он не может правильно отобразиться. Кажется, что оно может отображать приложение только при установленном API 21 или ниже, поскольку в тот момент я получал ту же ошибку, и как только я изменил ее на 21, оно снова заработало. Просто зайдите в build.gradle (module: app) и измените API на последнюю версию API 21.

0
Vimbainashe E Mushayikwa

Решено:

Создать новую папку values-v19

Создайте файл styles.xml в этой папке

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- For actionBar n' statusbar -->
    <item name="colorPrimary">#COLOR/item>
    <item name="colorPrimaryDark">#COLOR</item>

    <!-- For items -->
    <item name="colorAccent">#COLOR</item>
</style>

и это все :)

0
HerberthObregon

Я решил это путем перестройки проекта или модуля.

0
Pober Wong