Невозможно создать следующие классы: – android.support.v7.widget.Toolbar
Я создаю приложение с новым Material Design, используемым в Android Lollipop (5.0).
Я использую следующие руководства:
После создания моей панели инструментов я получаю эту ошибку: “Следующие классы не могут быть созданы:
– android.support.v7.widget.Toolbar “
Приложение хорошо работает в телефоне или эмуляторе, но дизайнер макета Android Studio не отображает макет правильно.
Здесь есть несколько изображений:
Ошибка в представлении макета my_awesome_toolbar.xml
Ошибка в представлении макета activity_my.xml
xml-код стилей (values /styles.xml):
В настоящий момент я использую Android Studio Beta 0.8.9
Для Android Studio (или IntelliJ IDEA),
Если все выглядит нормально в вашем проекте и что вы все еще получаете ошибку во всех своих макетах, попробуйте “Инвалидировать кеш и перезагрузите”.
Подождите, пока Android Studio закончит создание всех кешей и индексов.
Я изменил файл res/values /styles.xml следующим образом:
и это решило проблему.
Я сделал то, что сказал @gbero, и я изменил номер версии Android, который Studio использует с 22 до 17, и он работает.
Я использую обратную совместимость для сборки для Android версии 22, но для таргетинга 17 (idk, если это правильно сказано, я все еще пытаюсь вычислить это приложение), чтобы вызвать обратную совместимость, что afaik – это то, что android.support.v7.* есть. Вероятно, это ошибка с кодом рендеринга. Не уверен, что очистка кеша, как было предложено выше, необходима, так как рендеринг не работал сразу после недействительности кеша, он начал работать после того, как я изменил версию для рендеринга. Если я вернусь к версии 22, рендеринг разрывается, если я вернусь к 17, он снова будет работать.
- Очистить проект
- Проект перестройки
- Синхронизация Gradle
Это помогло мне.
Другая ошибка, которая может иметь такой же эффект, может быть неправильной темой в предварительном просмотре.
По какой-то причине я выбрал здесь еще одну тему. После выбора моего AppTheme он снова работал отлично:
Извините, если я отвечу на себя, но, наконец, решением моей проблемы было обновление Android Studio до новой версии 0.8.14 Canary Channel: http://tools.android.com/recent/
После обновления проблема исчезла:
Я оставляю этот вопрос здесь для тех, у кого есть эта проблема в будущем.
- Очистить проект
- Проект перестройки
- Синхронизация Gradle
он работает для меня
Я сделал то, что сказал @ang_lee, а также добавил эту строку в стиль темы приложения:
Я использую версию 26.0.1:
У меня была такая же ошибка на экране Android Studio, когда я хотел предвидеть свой проект. Я исправляю проблему следующим образом:
1- Я меняю версию с 22 на 21. Но если я вернусь к версии 22, рендеринг разрывается, если я вернусь к 21, он снова работает. Спасибо @Overloaded_Operator
Я обновил свою Android-студию, но не работал. Спасибо @Salvuccio96
У меня была такая же ошибка. В конце концов я получил это уведомление о том, что плагин устарел:
После обновления, проблема исчезла.
Вышеупомянутые решения мне не помогли. Я пробовал 2 первых шага от
эта ссылка.
Работала хорошо для меня.
Но не забывайте
в вашем MainActivity.java
Я использую android studio 2.3.3:
– Открыть styles.xml
– Студия Android покажет уведомление в правом верхнем углу с двумя вариантами: “открыть редактор” и “Скрыть уведомление”.
– Нажмите “Открыть редактор”
– В раскрывающемся списке “Тема родителя” нажмите “Показать все темы”
– Выберите любую тему, начиная с AppCompat… (я использовал AppComat.DayNight)
Примечание. Если ваша строка заголовка исчезает, вам необходимо расширить AppCompatActivity вместо Activity.
Все самое лучшее!
Ни один из вышеперечисленных не работал у меня,
i обновил версию appCompat – v7 в моем файле pp gradle с 23 по 25.3.1. помогли заставить его работать для меня
Источник
В чем разница между android.widget.Toolbar и android.support.v7.widget.Toolbar?
Может ли кто-нибудь объяснить мне разницу между ними и почему они не взаимозаменяемы?
Импорт android.widget.Toolbar вызовет ошибку компиляции, тогда как импорт android.support.v7.widget.Toolbar работает отлично.
В чем разница между этими двумя видами импорта?
3 ответа
Когда вы увидите, что библиотеки поддержки v4 знают, что это библиотека поддержки Android для старых устройств с низким уровнем API (обратная совместимость).
Эти библиотеки включают в себя самый большой набор API по сравнению с другими библиотеками, включая поддержку компонентов приложения, функций пользовательского интерфейса, доступности, обработки данных, сетевых подключений и утилит программирования.
Вы можете проверить все библиотеки поддержки здесь.
Примечание. Вы также можете использовать AndroidX, это новая и улучшенная библиотека поддержки.
AndroidX — значительное улучшение оригинальной библиотеки поддержки Android.
Библиотека поддержки (теперь AndroidX) разработана для обратной совместимости, а android.widget.Toolbar является текущей платформой. типа .
Если вы не знаете, что такое библиотека поддержки, посмотрите этот ответ.
По умолчанию Android Studio заставляет вас использовать AppCompatActivity, которая является частью библиотеки поддержки и, следовательно, ожидает также панель инструментов поддержки.
Почему ошибка компиляции?
Потому что параметр в setSupportActionBar (панель инструментов)
android.support.v7.widget.Toolbar а не
Как это проверить?
setSupportActionBar является частью AppCompatActivity . Если вы хотите увидеть этот параметр, просто переопределите метод в вашем Activity и удалите импорт, он укажет, какой класс следует импортировать, чтобы избавиться от ошибки компиляции.
Это довольно очевидно. Оба являются разными классами, один принадлежит к библиотеке поддержки, а другой — нет.
Сопряжение с AppCompatActivity
Все новые функции продолжают добавляться в библиотеки поддержки, чтобы у вас была одинаковая функциональность на всех уровнях API. Другими словами, библиотеки поддержки постоянно обновляются. Например, рекомендуется использовать android.support.v4.app.Fragment с сопряжением с AppcompatActivity.
Таким образом, совместимость на всех уровнях API может быть причиной.
Суть в том, что если ваша активность расширяет AppCompatActivity, используйте
Источник