レンダリング中に例外が発生しました:モード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/...
Amagi82を

2
compileSdkVersion 24 / buildToolsVersion "24.0.2"でも同じ問題が発生します。ただし、昨日Android Studioに(さまざまなこと、本質的には更新を要求されたものを)更新を行わせたので、その後壊れたと思います。
Steven Craft

1
@HenriquedeSousa en.wikipedia.org/wiki/Andy_Rubinが#Googleを去ったときに発生する問題
IntelliJ

回答:


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 Support Libraryは、下位互換性のあるユーティリティ関数を提供します。アプリはこれらのユーティリティ関数を使用して、幅広いAndroidシステムバージョンで適切なユーザーエクスペリエンスを提供できます。

これはバグの問題であり、support-designライブラリの今後のリリースで修正される予定です。

Temporary Solutionsのバージョンをダウングレードする必要があります。

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"レイアウトXMLでrecyclerViewを追加 します

ただし、実行時にInflateExceptionがスローされます。だから、REMOVEアプリを実行する前に、XMLレイアウトファイルから、このプロパティを!


4

一時的な解決策として、リサイクラービューの子クラスを作成し、以下のようにonAttachedToWindowのみをオーバーライドできます。次に、このクラスをXMLレイアウトで使用します

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

更新:サポートライブラリ25.0.1以降、修正はライブラリにすでに含まれており、問題はもう存在しません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.