2017-09-13 1 views
4

Ich schreibe Android-Anwendung mit DataBinding durch Referenzierung https://developer.android.com/topic/libraries/data-binding/index.html.Android Databinding Build-Fehler: Konstante Ausdruck erforderlich

Doch während mein Projekt Bau, Es ist ein Fehler in generierten Klasse als

> '/databinding/DataBinderMapper.java:10: error: constant expression 
> required.' 

Dieser Fehler zeigt im Inneren erzeugten Klasse in switch-Anweisung geschieht DataBinderMapper.java (Diese Datei ist eine Auto-Datei generiert für Databinding)

Jeder weiß den Grund für diesen Java-Switch-Fall Fehler passiert in Auto generierte Buld-Datei?

Bearbeitungen: Ich fand den Grund für dieses Problem ist, Layout-Referenz erstellt in R.java Datei ist nicht endgültig für diesen Fall. Zum Beispiel in meinem Fall das Layout Referenz in R.java ist

public static int activity_main=0x7f04001c; 

Eigentlich sollte es

public static final int activity_main=0x7f04001b;

sein, aber ich weiß nicht, den Grund für das passiert ist und wie es sich ändern bis zum Schluss.

+0

Haben Sie einen sauberen Build versucht? –

+0

Yeh, aber gleicher Fehler – Zubair

Antwort

2

Dieser Fehler tritt auf, wenn Ihr Projekt neben der Anwendung eine Abhängigkeit mit der Bibliothek oder einem externen Plugin aufweist. Der Grund für dieses Problem ist, dass die generierten IDs möglicherweise zusammenstoßen, wenn Sie eine Abhängigkeit mit mehreren Bibliotheken/Plugins haben.

+0

In meinem Fall gab es zwei Plugins für mein Projekt. Durch das Entfernen wurde das Problem behoben. Aber in meinem Projekt muss ich dieses Plugin anwenden, um mit anderen Abhängigkeiten zu arbeiten. Haben Sie eine Idee, dieses Problem zu beheben, ohne diese Plugins zu entfernen? – Zubair

1

Wahrscheinlich hat Ihr Modell, an das Sie sich binden, letzte Modifikatoren in seinen Variablen.