Problemy z renderowaniem Wyjątek zgłoszony podczas renderowania: com.android.ide.common.rendering.api.LayoutlibCallback


154

Napotkałem problem podczas tworzenia projektu w Android Studio. (Wersja 1.5.1)

Opisuję swoje działania krok po kroku:

  • Otwórz Android Studio.
  • Utwórz nowy projekt bez żadnej aktywności.
  • Zrób pustą aktywność.

I może wystąpić problem w trybie podglądu:

Otrzymuję tę wiadomość:

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

Śledzenie stosu:

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)

Jaki może być problem?

Odpowiedzi:


414

Miałem ten sam problem po kilku aktualizacjach kilka minut temu. Aby rozwiązać problem z renderowaniem, zmieniłem wersję Androida używaną do renderowania układów z Android Studio z powrotem na „API 23: Android 6.0”.

Studio Android


5
Tak, to działa. Najlepiej też odznaczyć opcję „Automatycznie wybierz najlepszy”, ponieważ wybiera tylko najnowszą. Powinieneś ręcznie wybrać sdk, z którym chcesz wyświetlić podgląd.
Abhishek

Zrobiłem to, ale teraz pojawia się następujący błąd. Couldn't resolve resource @android:color/background_material_light
Martin Hoban

Ostrzegam: to powracający problem.
marciowb

Ale dlaczego ten problem występuje, gdy poziom API jest ustawiony na 24. A dlaczego nie w 23?
Jay Donga,

19

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

Zgłaszane, jeśli aplikacja próbuje wywołać określoną metodę klasy (statyczną lub instancję), a ta klasa nie ma już definicji tej metody. Zwykle ten błąd jest wychwytywany przez kompilator; ten błąd może wystąpić w czasie wykonywania tylko wtedy, gdy definicja klasy uległa zmianie w sposób niezgodny.

Twoja aplikacja musi być przeznaczona dla systemu Android 6.0 (poziom interfejsu API 23), aby włączyć to zachowanie; nie musisz dodawać żadnego dodatkowego kodu.

Po prostu wybierz „API 23: Android 6.0” w sekcji Podgląd. wprowadź opis obrazu tutaj


2

Miałem ten sam problem, kiedy zainstalowałem Android Studio 2.1 na Ubuntu 14.04, Nawet ikona robota Androida, która wyświetla wersję Androida używaną do renderowania układu, pokazywała tylko wersję API Level 24 i żadnych innych wersji.

Musiałem włączyć pobieranie API 23, przechodząc do poniższej ścieżki

Narzędzia -> Menedżer SDK -> Android SDK -> Platformy SDK -> Nazwa.

Zaznacz opcję Android 6.0 (Marshwallow), która zostanie pobrana teraz. Teraz będziesz mógł zobaczyć poziom API 23 i wybrać, które możemy obejść ten problem.


1

Podobny problem miałem z Androidem Studio 1.5.1 w Windows 10. Podgląd nie działał bez względu na wybraną wersję Androida. Śledzenie stosu zaczyna się od:

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

Kiedy usunąć atrybut tools:showIn="@layout/activity_main" z RelativeLayoutrozwiązuje problem dla wszystkich wersji Androida z wyjątkiem „N”. Mam włączony Android 2.2, 2.3.3, 5.0.1 i 6.0

Nie potrafię jednak wyjaśnić, dlaczego akcja rozwiązuje problem ani dlaczego działa dla wersji N.


0

To nie jest aktualna odpowiedź, ale dla każdego, kto szuka kogoś, kto ma ten sam problem, aktualizacja studia Android załatwia sprawę. Chociaż wszystkie powyższe sugestie działają, chcesz uzyskać aktualizację (wersja 2.1.2).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.