Kotlin DataBinding generiert Klassen nicht

OnDemand

Top Contributor
Moin!

Hab in meinem Gradle File
Java:
buildFeatures{
    viewBinding true
}

eingefügt, aber es generiert mir nach einem Sync nicht die entsprechenden Binding Klassen. Hat jemand ne Idee? Bin Neuling in Gradle und Kotlin. Aber laut Buch, sollen jetzt schon die Klassen erzeugt worden sein
 

OnDemand

Top Contributor
Wo greife ich wie drauf zu? Ich habe ein Layout erzeugt, einen Button rein gemacht und das Gradle File synchronisiert. Aber es werden keine Binding Klassen erzeugt.

Es ist Android
 

OnDemand

Top Contributor
Nein da hat sich nichts geändert.

Java:
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

Liegt das am ConstraintLayout? Kann das vielleicht kein Binding?
 

Jw456

Top Contributor
Du must es ändern das geht nicht von selbst.
Schaue Doku

Du brauchst jetzt auch die binding variable am besten als Instanzvariable

Java:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ResultProfileBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
}
 

OnDemand

Top Contributor
Once view binding is enabled in a module, it generates a binding class for each XML layout file present in that module.

Die Binding Klassen, werden aber nicht generiert. Das ist das Problem
 

Jw456

Top Contributor
Hast du im xml für deine textview oder Button eine id vergeben. Sonst wird aus der xml keine Klasse erstellt.

Und hast du dein onCreate angepasst.

 

Jw456

Top Contributor
Versuche mal nachdem du das Binding eingeschaltet hast. Eine neue Activity zu erstellen mit Layout.
Da sollte jetzt das binding automatisch in der onCreate sein.
 

OnDemand

Top Contributor
Ja der Button hat eine ID. Ich weiss nicht, was ich in der onCreate anpassen soll. In der Doku :
binding = ResultProfileBinding.inflate(layoutInflater)

aber die xxxBinding Klasse hab ich ja gar nicht, weil es nicht automatisch generiert wird.
 

Jw456

Top Contributor
Die Klasse wurde vor dem Einschalten des Binding erstellt. Da bist du nun selber in der Pflicht.
Und wenn keine binding Klasse erstellt wurde. Dann bei Build new build.
 

OnDemand

Top Contributor
Also bei EmptyActivity erstellt es kein Binding. Vermutlich weil sie emtpy ist. Wenn ich einen Button in die Emtpty Activity einfüge, generiert es kein Binding.

1. neue Empty Activity erstellt
2. Button mit ID hinzugefügt
3. Sync
=> keine Bindings

Edit: jetzt ist es da. Irgendwie spinnt Intellij oder braucht eine Weile
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben