Виняток, викликаний під час рендерингу: Не вдається знайти режим 0


91

Після оновлення BuildToolsдо версії 25.0.0.

compileSdkVersion 25
buildToolsVersion "25"

У мене проблема з попереднім переглядом макета для Android. Тепер він показує помилку:

Виняток, викликаний під час рендерингу: Не вдається знайти режим 0

введіть тут опис зображення

Я намагався очистити та відновити проект, але він не працює. До оновлення все було добре.

Я знаю, що можу повернутися до попередніх версій BuildTools, але я хочу знати, чому це не працює на версії 25.0.0?


Здається, це проблема з 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)

15
Схоже на помилку з 25.0.0. Я відкрив для нього проблему: code.google.com/p/android/issues/…
Джим Пекарек,

2
Я отримую ту ж проблему з compileSdkVersion 24 / buildToolsVersion "24.0.2" - однак я дозволив Android Studio зробити оновлення (різних речей, по суті, того, що коли-небудь просив оновити) вчора, і я вважаю, що після цього він був зламаний.
Steven Craft

1
@HenriquedeSousa Проблема, що виникає, коли en.wikipedia.org/wiki/Andy_Rubin пішов #Google
IntelliJ Amiya

Відповіді:


111

Цю проблему вирішено, оновіть бібліотеку підтримки до

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'

62

Це дратує помилка версії 25. Тимчасовим рішенням є зниження рівня вашого проекту,

 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'

18

Іншим тимчасовим рішенням є заміна <android.support.v7.widget.RecyclerViewна, <RecyclerViewщоб ви могли бачити відображений вигляд. Під час компіляції поверніть його на<android.support.v7.widget.RecyclerView


7

Бібліотека підтримки Android надає зворотно сумісні утилітні функції. Програми можуть використовувати ці утилітні функції, щоб забезпечити відповідну роботу користувачів у широкому діапазоні версій системи Android.

Це проблема помилки, і її слід виправити у майбутньому випуску бібліотеки підтримки дизайну .

Вам слід знизити свою версію до тимчасових рішень .

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' 

6

Щоб побачити попередній перегляд, я використовую цей трюк ..... додати app:layoutManager="0"для recyclerView у макет XML

Але це викине InflateException під час виконання. Тож ВИДАЛІТЬ цю властивість із файлу XML-макета перед запуском програми!


4

Як тимчасове рішення ви можете створити дочірній клас подання утилізатора та замінити лише onAttachedToWindow, як показано нижче. Потім використовуйте цей клас у своїх XML-макетах

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

Оновлення: починаючи з бібліотеки підтримки 25.0.1, виправлення вже включено в бібліотеку, і проблема вже не існує

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