Wyjątek zgłoszony podczas renderowania: nie można zlokalizować trybu 0

91

Po aktualizacji BuildToolsdo wersji 25.0.0.

compileSdkVersion 25
buildToolsVersion "25"

Mam problem z podglądem układu Androida. Teraz pokazuje błąd:

Wyjątek zgłoszony podczas renderowania: nie można zlokalizować trybu 0

wprowadź opis obrazu tutaj

Próbowałem wyczyścić i przebudować projekt, ale to nie działa. Przed aktualizacją wszystko było dobrze.

Wiem, że mogę wrócić do poprzednich wersji BuildTools, ale chcę wiedzieć, dlaczego nie działa w wersji 25.0.0?


Wygląda na to, że jest to problem RecyclerView

java.lang.IllegalStateException: Unable to locate mode 0
at android.view.DisplayInfo.findMode(DisplayInfo.java:458)
at android.view.DisplayInfo.getMode(DisplayInfo.java:445)
at android.view.Display.getRefreshRate(Display.java:648)
at android.support.v7.widget.RecyclerView.onAttachedToWindow(RecyclerView.java:2392)
at android.view.View.dispatchAttachedToWindow(View.java:15392)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2953)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:42)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:333)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:389)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:548)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:533)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:966)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:533)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$53(RenderTask.java:659)
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)
RediOne1
źródło
15
Wygląda na błąd w 25.0.0. Otworzyłem dla niego problem: code.google.com/p/android/issues/…
Jim Pekarek
2
Mam ten sam problem z compileSdkVersion 24 / buildToolsVersion "24.0.2" - jednak wczoraj pozwoliłem Androidowi Studio na wykonanie aktualizacji (różnych rzeczy, zasadniczo o to, co kiedykolwiek prosiło o aktualizację) i uważam, że po tym się zepsuło.
Steven Craft
1
@HenriquedeSousa Problem pojawił się, gdy en.wikipedia.org/wiki/Andy_Rubin opuścił #Google
IntelliJ Amiya

Odpowiedzi:

111

Ten problem został rozwiązany, zaktualizuj bibliotekę pomocy do

compile 'com.android.support:recyclerview-v7:25.0.1'
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:design:25.0.1'
Furqan
źródło
62

To irytujący błąd wersji 25 .. Tymczasowe rozwiązanie polega na obniżeniu wersji projektu,

 compile 'com.android.support:appcompat-v7:24.2.1'
 compile 'com.android.support:design:24.2.1'
 compile 'com.android.support:recyclerview-v7:24.2.1'
XcodeNOOB
źródło
18

Innym tymczasowym rozwiązaniem jest zastąpienie <android.support.v7.widget.RecyclerViewgo, <RecyclerViewaby można było zobaczyć renderowany widok. Podczas kompilacji zmień go z powrotem na<android.support.v7.widget.RecyclerView

Hibbem
źródło
7

Biblioteka obsługi systemu Android zapewnia funkcje narzędziowe kompatybilne wstecz. Aplikacje mogą korzystać z tych funkcji narzędziowych, aby zapewnić odpowiednie wrażenia użytkownika w szerokiej gamie wersji systemu Android.

Jest to błąd i powinien zostać naprawiony w przyszłym wydaniu biblioteki wsparcia projektowania .

Powinieneś obniżyć swoją wersję do tymczasowych rozwiązań .

compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:design:v7:25.0.1' 
compile 'com.android.support:recyclerview-v7:25.0.1' 
IntelliJ Amiya
źródło
6

Aby zobaczyć podgląd używam tej sztuczki ..... dodaj app:layoutManager="0" dla recyklingu w formacie XML układu

Ale wyrzuci InflateException w czasie wykonywania. Dlatego USUŃ tę właściwość z pliku układu XML przed uruchomieniem aplikacji!

Zohab Ali
źródło
4

Jako rozwiązanie tymczasowe możesz utworzyć klasę potomną widoku recyklera i nadpisać tylko onAttachedToWindow, jak poniżej. Następnie użyj tej klasy w swoich układach XML

@Override
protected void onAttachedToWindow() {
    if (!isInEditMode()) {
        super.onAttachedToWindow();
    }
}

Aktualizacja: począwszy od biblioteki obsługi 25.0.1, poprawka już zawarta w bibliotece i problem już nie istnieje

Sameh Michaił
źródło