J'utilise la bibliothèque DataBinding. lorsque j'ajoute un fichier de disposition au projet ou que j'ajoute une vue dans le fichier de disposition, Android Studio ne peut pas générer de classe de liaison pour la disposition, jusqu'à la reconstruction du projet.
fichier de mise en page:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
tools:context=".MainActivity">
<data>
<variable
name="viewModel"
type="com.qk365.thweeks.MainViewModel" />
</data>
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.design.widget.TabLayout
Android:id="@+id/main_tab"
Android:layout_width="match_parent"
Android:layout_height="50dp"
Android:layout_alignParentBottom="true"
Android:background="@Android:color/white"
Android:elevation="5dp"
app:tabGravity="fill"
app:tabIndicatorHeight="0dp"
app:tabMode="fixed"
app:tabSelectedTextColor="#7343ea"
app:tabTextAppearance="@style/TextAppearance.Design.Tab"
app:tabTextColor="#181818" />
<Android.support.v4.view.ViewPager
Android:id="@+id/main_viewpager"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_above="@id/main_tab">
</Android.support.v4.view.ViewPager>
</RelativeLayout>
</layout>
J'ai vérifié Android Journaux Studio, lorsque le fichier de disposition change, il y a toujours un message d'erreur.
2018-04-17 11:20:01,699 [e-1024-b02] ERROR - .intellij.psi.impl.ElementBase - Element: class com.intellij.psi.impl.source.xml.XmlFileImpl because: different providers: SingleRootFileViewProvider{myVirtualFile=file://E:/AndroidStudioProjects/thweeks/module-order/src/main/res/layout/order_fragment_pick_up_order.xml, content=VirtualFileContent{size=2845}}(5200996b); SingleRootFileViewProvider{myVirtualFile=file://E:/AndroidStudioProjects/thweeks/module-order/src/main/res/layout/order_fragment_pick_up_order.xml, content=VirtualFileContent{size=2845}}(398a3993)
invalidated at: see attachment
com.intellij.psi.PsiInvalidElementAccessException: Element: class com.intellij.psi.impl.source.xml.XmlFileImpl because: different providers: SingleRootFileViewProvider{myVirtualFile=file://E:/AndroidStudioProjects/thweeks/module-order/src/main/res/layout/order_fragment_pick_up_order.xml, content=VirtualFileContent{size=2845}}(5200996b); SingleRootFileViewProvider{myVirtualFile=file://E:/AndroidStudioProjects/thweeks/module-order/src/main/res/layout/order_fragment_pick_up_order.xml, content=VirtualFileContent{size=2845}}(398a3993)
invalidated at: see attachment
at com.intellij.psi.util.PsiUtilCore.ensureValid(PsiUtilCore.Java:502)
at com.intellij.psi.impl.smartPointers.SmartPointerManagerImpl.createSmartPsiElementPointer(SmartPointerManagerImpl.Java:78)
at com.intellij.psi.impl.smartPointers.SmartPointerManagerImpl.createSmartPsiElementPointer(SmartPointerManagerImpl.Java:69)
at com.intellij.psi.impl.smartPointers.SmartPointerManagerImpl.createSmartPsiElementPointer(SmartPointerManagerImpl.Java:64)
at com.intellij.psi.impl.ElementBase$ElementIconRequest.<init>(ElementBase.Java:183)
at com.intellij.psi.impl.ElementBase$ElementIconRequest.<init>(ElementBase.Java:178)
at com.intellij.psi.impl.ElementBase.computeIcon(ElementBase.Java:110)
at com.intellij.psi.impl.ElementBase.getIcon(ElementBase.Java:86)
at com.intellij.codeInsight.lookup.DefaultLookupItemRenderer._getRawIcon(DefaultLookupItemRenderer.Java:79)
at com.intellij.codeInsight.lookup.DefaultLookupItemRenderer.getRawIcon(DefaultLookupItemRenderer.Java:48)
at com.intellij.codeInsight.completion.JavaMethodCallElement.renderElement(JavaMethodCallElement.Java:444)
at com.intellij.codeInsight.completion.JavaCompletionUtil$4.renderElement(JavaCompletionUtil.Java:468)
at com.intellij.codeInsight.completion.JavaCompletionUtil$4.renderElement(JavaCompletionUtil.Java:465)
at com.intellij.codeInsight.lookup.LookupElementDecorator$VisagisteDecorator.renderElement(LookupElementDecorator.Java:179)
at com.intellij.codeInsight.lookup.LookupElementDecorator.renderElement(LookupElementDecorator.Java:83)
at com.intellij.codeInsight.lookup.impl.LookupCellRenderer.getListCellRendererComponent(LookupCellRenderer.Java:150)
at com.intellij.ui.ExpandedItemListCellRendererWrapper.getListCellRendererComponent(ExpandedItemListCellRendererWrapper.Java:38)
at javax.swing.plaf.basic.BasicListUI.paintCell(BasicListUI.Java:209)
at com.intellij.ui.components.WideSelectionListUI.paintCell(WideSelectionListUI.Java:56)
at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.Java:317)
at javax.swing.plaf.basic.BasicListUI.Paint(BasicListUI.Java:240)
at com.intellij.ui.components.WideSelectionListUI.Paint(WideSelectionListUI.Java:32)
at javax.swing.plaf.ComponentUI.update(ComponentUI.Java:161)
at javax.swing.JComponent.paintComponent(JComponent.Java:780)
at com.intellij.ui.components.JBList.paintComponent(JBList.Java:186)
at javax.swing.JComponent.Paint(JComponent.Java:1056)
at com.intellij.ui.components.JBList.Paint(JBList.Java:118)
at javax.swing.JComponent.paintChildren(JComponent.Java:889)
at javax.swing.JComponent.Paint(JComponent.Java:1065)
at javax.swing.JViewport.Paint(JViewport.Java:728)
at com.intellij.ui.components.JBViewport.Paint(JBViewport.Java:236)
at javax.swing.JComponent.paintChildren(JComponent.Java:889)
at javax.swing.JComponent.Paint(JComponent.Java:1065)
at javax.swing.JComponent.paintChildren(JComponent.Java:889)
at javax.swing.JComponent.Paint(JComponent.Java:1065)
at javax.swing.JComponent.paintChildren(JComponent.Java:889)
at javax.swing.JComponent.Paint(JComponent.Java:1065)
at javax.swing.JLayeredPane.Paint(JLayeredPane.Java:586)
at javax.swing.JComponent.paintToOffscreen(JComponent.Java:5210)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.Java:1579)
at javax.swing.RepaintManager$PaintManager.Paint(RepaintManager.Java:1502)
at javax.swing.BufferStrategyPaintManager.Paint(BufferStrategyPaintManager.Java:306)
at javax.swing.RepaintManager.Paint(RepaintManager.Java:1272)
at javax.swing.JComponent._paintImmediately(JComponent.Java:5158)
at javax.swing.JComponent.paintImmediately(JComponent.Java:4969)
at javax.swing.RepaintManager$4.run(RepaintManager.Java:831)
at javax.swing.RepaintManager$4.run(RepaintManager.Java:814)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.Java:80)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.Java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.Java:789)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.Java:738)
at javax.swing.RepaintManager.access$1200(RepaintManager.Java:64)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.Java:1732)
at Java.awt.event.InvocationEvent.dispatch(InvocationEvent.Java:311)
at Java.awt.EventQueue.dispatchEventImpl(EventQueue.Java:762)
at Java.awt.EventQueue.access$500(EventQueue.Java:98)
at Java.awt.EventQueue$3.run(EventQueue.Java:715)
at Java.awt.EventQueue$3.run(EventQueue.Java:709)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.Java:80)
at Java.awt.EventQueue.dispatchEvent(EventQueue.Java:732)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.Java:822)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.Java:650)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.Java:366)
at Java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.Java:201)
at Java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.Java:116)
at Java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.Java:105)
at Java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.Java:101)
at Java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.Java:93)
at Java.awt.EventDispatchThread.run(EventDispatchThread.Java:82)
2018-04-17 11:20:01,699 [e-1024-b02] ERROR - .intellij.psi.impl.ElementBase - Android Studio 3.1.1 Build #AI-173.4697961
2018-04-17 11:20:01,699 [e-1024-b02] ERROR - .intellij.psi.impl.ElementBase - JDK: 1.8.0_152-release
2018-04-17 11:20:01,699 [e-1024-b02] ERROR - .intellij.psi.impl.ElementBase - VM: OpenJDK 64-Bit Server VM
2018-04-17 11:20:01,699 [e-1024-b02] ERROR - .intellij.psi.impl.ElementBase - Vendor: JetBrains s.r.o
2018-04-17 11:20:01,699 [e-1024-b02] ERROR - .intellij.psi.impl.ElementBase - OS: Windows 10
2018-04-17 11:20:01,699 [e-1024-b02] ERROR - .intellij.psi.impl.ElementBase - Last Action: EditorChooseLookupItem
J'ai eu le même problème. Peu importe ce que j'ai essayé, il n'a pas pu générer de classe de liaison. L'astuce était que vous deviez renommer votre fichier xml de mise en page. Imaginons que vous ayez un fichier xml my_layout.xml puis renommez-le my_layout_temp.xml. Maintenant, la classe de liaison sera générée avec le nom MyLayoutTempBinding. Si vous n'aimez pas le nom, vous pouvez le renommer en my_layout.xml. À la fin, cela résoudra le problème de génération de classe de liaison.
Remarque: Pour les étapes initiales de débogage, voir la réponse de Khemraj ici - Classe de liaison de données non générée
Je peux voir les classes de liaison auto-générées momentanément après l'émission d'un
Fichier> Invalider les caches/redémarrer
mais uniquement lorsque l'indexation est suspendue, immédiatement après Android Studio redémarre (je devrais probablement utiliser autre chose que "databinding" pour un nom de projet de test):
En pause, ActivityMain2Binding
sera reconnu par le compilateur, cependant les opérations build et make ne sont pas disponibles. Peu de temps après la reprise de l'indexation, les classes de liaison associées sont supprimées et l'erreur IDE mentionnée dans l'OP est enregistrée.
Mise à jour (2018.09.11)
À l'aide d'une astuce trouvée dans le message de bogue commenté ci-dessus ( https://issuetracker.google.com/issues/7760704 ), j'ai modifié le paramètre de liaison de données à
J'ai ensuite ajouté une référence à la classe générée
J'ai la même erreur dans le même environnement que vous. Mais malheureusement, je n'ai pas pu résoudre ce problème avec Android Studio 3.1.1. Pour l'instant, j'utilise Android Studio 3.2 Canary11 et cela fonctionne très bien.