Проблеми з візуалізацією Виняток, що виникає під час візуалізації: com.android.ide.common.rendering.api.LayoutlibCallback


154

Я зіткнувся з проблемою під час створення проекту в Android Studio. (Версія 1.5.1)

Я описую свої дії крок за кроком:

  • Відкрийте Android Studio.
  • Створіть новий проект без жодної діяльності.
  • Зробіть пусту активність.

І в режимі попереднього перегляду може виникнути проблема:

Я отримую це повідомлення:

Rendering Problems Exception raised during rendering: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser(Ljava/lang/String;)Lorg/xmlpull/v1/XmlPullParser;

У сліді стека:

java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser(Ljava/lang/String;)Lorg/xmlpull/v1/XmlPullParser;
    at com.android.layoutlib.bridge.impl.ResourceHelper.getInternalComplexColor(ResourceHelper.java:146)
    at com.android.layoutlib.bridge.impl.ResourceHelper.getColorStateList(ResourceHelper.java:231)
    at android.content.res.BridgeTypedArray.getColorStateList(BridgeTypedArray.java:308)
    at android.widget.TextView.<init>(TextView.java:776)
    at android.widget.TextView.<init>(TextView.java:705)
    at android.widget.TextView.<init>(TextView.java:701)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:50)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:45)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:41)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:163)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at com.android.layoutlib.bridge.bars.CustomBar.<init>(CustomBar.java:95)
    at com.android.layoutlib.bridge.bars.StatusBar.<init>(StatusBar.java:67)
    at com.android.layoutlib.bridge.impl.Layout.createStatusBar(Layout.java:222)
    at com.android.layoutlib.bridge.impl.Layout.<init>(Layout.java:144)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:213)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
    at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:362)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
    at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

У чому може бути проблема?

Відповіді:


414

У мене виникла така ж проблема після декількох оновлень хвилин тому, що я вирішив, щоб вирішити проблему візуалізації, це змінити версію Android, використовувану для відтворення макетів з Android Studio назад, на "API 23: Android 6.0".

Студія Android


5
Так, це працює. Крім того, краще зняти прапорець "Автоматично вибрати кращий", оскільки він просто вибирає останню. Вам слід вручну вибрати SDK, з яким ви хочете попередньо переглянути.
Абхішек

Я це зробив, але зараз отримую таку помилку. Couldn't resolve resource @android:color/background_material_light
Мартін Хобан

Просто застерегти: це повторювана проблема.
marciowb

Але чому ця проблема виникає, коли рівень API встановлений на 24. А чому б не в 23?
Джей Донга

19

java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser (Ljava / lang / String;) Lorg / xmlpull / v1 / XmlPullParser;

Викинуто, якщо програма намагається викликати визначений метод класу (статичний або екземпляр), і цей клас більше не має визначення цього методу. Зазвичай компілятор виявляє цю помилку; ця помилка може виникнути лише під час виконання, якщо визначення класу несумісно змінено.

Ваш додаток має націлювати на Android 6.0 (рівень API 23), щоб увімкнути цю поведінку; вам не потрібно додавати будь-який додатковий код.

Просто виберіть "API 23: Android 6.0" у розділі попереднього перегляду. введіть тут опис зображення


2

У мене була така ж проблема, коли я встановив андроїд студію 2.1 на ubuntu 14.04. Навіть значок андроїд-робота, який відображає версію андроїда, використовувану для макета візуалізації, показував лише версію API рівня 24 та інших версій.

Мені довелося завантажувати API 23, перейшовши на шлях нижче

Інструменти -> Менеджер SDK -> SDK для Android -> Платформи SDK -> Ім'я.

Перевірте варіант Android 6.0 (Marshwallow). Це буде завантажено зараз. Тепер ви зможете побачити API рівня 23 та вибравши, яким чином ми можемо обійти цю проблему.


1

У мене була схожа проблема з Android Studio 1.5.1 в Windows 10. Попередній перегляд не працював незалежно від того, яку версію Android вибрали. Трафік починається з:

"java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser (Ljava / lang / String;) Lorg / xmlpull / v1 / XmlPullParser;"

Коли я видаляю атрибут tools:showIn="@layout/activity_main" із RelativeLayoutпроблеми, вирішується проблема для всіх версій Android, окрім "N". У мене ввімкнено Android 2.2, 2.3.3, 5.0.1 та 6.0

Я не можу пояснити, чому дія вирішує проблему, хоча і чому вона працює для версії N.


0

Це не своєчасна відповідь, але для тих, хто шукає когось іншого, який відчуває таку ж проблему, оновлення андроїд-студії робить свою справу. Незважаючи на те, що всі наведені вище пропозиції, ви хочете отримати оновлення (версія 2.1.2).

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