Eccezione sollevata durante il rendering: impossibile individuare la modalità 0


91

Dopo l'aggiornamento BuildToolsalla versione 25.0.0.

compileSdkVersion 25
buildToolsVersion "25"

Ho un problema con l'anteprima del layout Android. Ora mostra l'errore:

Eccezione sollevata durante il rendering: impossibile individuare la modalità 0

inserisci qui la descrizione dell'immagine

Ho provato a pulire e ricostruire il progetto, ma non funziona. Prima dell'aggiornamento tutto andava bene.

So che posso tornare alle versioni precedenti di BuildTools, ma voglio sapere perché non funziona sulla versione 25.0.0?


Sembra che sia un problema con 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
Sembra un bug con 25.0.0. Ho aperto un problema per esso: code.google.com/p/android/issues/…
Amagi82

2
Ho lo stesso problema con compileSdkVersion 24 / buildToolsVersion "24.0.2" - tuttavia ho lasciato che Android Studio facesse un aggiornamento (di varie cose, essenzialmente quello che ha chiesto di aggiornare) ieri, e credo che sia stato rotto dopo.
Steven Craft

1
@HenriquedeSousa Problema sorto quando en.wikipedia.org/wiki/Andy_Rubin ha lasciato #Google
IntelliJ Amiya

Risposte:


111

Questo problema è stato risolto, aggiorna la libreria di supporto a

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

È un bug fastidioso della versione 25 .. Una soluzione temporanea è eseguire il downgrade del progetto,

 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

Un'altra soluzione temporanea è sostituire <android.support.v7.widget.RecyclerViewcon in <RecyclerViewmodo da poter vedere la vista renderizzata. Durante la compilazione, cambiarlo di nuovo in<android.support.v7.widget.RecyclerView


7

La libreria di supporto Android fornisce funzioni di utilità compatibili con le versioni precedenti. Le app possono utilizzare queste funzioni di utilità per fornire un'esperienza utente appropriata su un'ampia gamma di versioni del sistema Android.

Si tratta di un problema di bug e dovrebbe essere risolto nella versione futura della libreria di progettazione di supporto .

È necessario eseguire il downgrade della versione per soluzioni temporanee .

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

Per vedere l'anteprima utilizzo questo trucco ..... aggiungi app:layoutManager="0" per recyclerView in un layout XML

Ma genererà InflateException in fase di esecuzione. Quindi RIMUOVI questa proprietà dal file di layout XML prima di eseguire l'app!


4

Come soluzione temporanea è possibile creare una classe figlia della visualizzazione riciclatore e sovrascrivere solo su AttachedToWindow come di seguito. Quindi usa questa classe nei tuoi layout XML

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

Aggiornamento: a partire dalla libreria di supporto 25.0.1, correzione già inclusa nella libreria e problema non esiste più

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.