[JAVA] Überprüfen Sie, ob Sie die Datenbindung verwenden und diese nicht funktioniert

Beachten Sie, dass die Bindungsdatei nicht mehrmals automatisch generiert wurde und ich süchtig danach war.

Ich habe den generierten Dateinamen falsch verstanden

MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

Der obige Code führt zu einem Kompilierungsfehler. Der Name der Aktivität lautet MainActivity, die Datenbindung wird jedoch gemäß dem Namen der Layoutdatei generiert, sodass der Name der generierten Klasse ActivityMainBinding lautet. Ich habe es als MainActivityBinding missverstanden und war ziemlich süchtig danach.

Ich habe es mit einem Layout-Tag umgeben, aber es wird nicht automatisch generiert

Ich habe es mit einem Layout-Tag wie diesem umgeben, aber es wird nicht automatisch generiert

<layout>
    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/my_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title" />
</layout>

Dies liegt daran, dass die Beschreibung von xmlns: android zu TextView geworden ist. Wenn Sie dies an der richtigen Stelle platzieren, wird es automatisch generiert.

<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/my_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title" />
</layout>

So was.

id Erstellt keine entsprechende Ansicht

<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@id/my_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title" />
</layout>

Warum soll bind.myTextView nicht automatisch generiert werden? Dies liegt daran, dass die ID falsch angegeben ist. Um genau zu sein, sollte es @ + id / my_text_view sein. Im Fall von findViewById funktioniert es auch dann, wenn kein + vorhanden ist, aber es scheint, dass DataBinding nicht funktioniert.

Sie können es wie folgt auf das richtige Format von @ + id einstellen.

<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/my_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title" />
</layout>

So was!

In der Layoutdatei ist ein Kompilierungsfehler aufgetreten. Ich habe das relevante Teil repariert, aber es wird jedes Mal rückgängig gemacht und die Korrektur wird nicht wiedergegeben

Wenn Sie häufig auf die Registerkarten schauen, öffnen und bearbeiten Sie die automatisch generierte Layoutdatei?

Die Datei, die beim Erstellen eines Fehlers geöffnet wird, ist eine automatisch generierte Datei. Sie müssen die Originaldatei daher manuell öffnen und bearbeiten. Ist das nicht ein Fehler in Android Studio 2.3?

Layoutdatei nicht vollständig

Der Inhalt des Daten-Tags des folgenden Codes wird ordnungsgemäß ausgefüllt, activity.getMyText wird jedoch nicht ausgefüllt.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="activity"
            type="ore.MainActivity"
    </data>
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@{activity.getMyText}"
        android:orientation="vertical">
    </LinearLayout>
</layout>

Sie können nur teilweise springen. Zuerst dachte ich, dass dies ein Fehler beim Schreiben war, aber es scheint eine Spezifikation zu sein. Das ist zu subtil, deshalb habe ich aufgehört, onClick in die Layoutdatei zu schreiben.

Beim Refactoring (Umbenennen usw.) versuche ich, den seltsamen Teil zu bearbeiten

Dies ist wahrscheinlich ein Fehler in der Refactoring-Funktion von Android Studio 2.3. Es scheint notwendig zu sein, zu erkennen, dass die Refactoring-Funktion nicht grundsätzlich dort verwendet werden kann, wo Datenbindung verwendet wird, oder dass die Refactoring-Funktion mit Vorsicht verwendet werden muss.

Recommended Posts

Überprüfen Sie, ob Sie die Datenbindung verwenden und diese nicht funktioniert
Dinge zu überprüfen, wenn Sie nicht mit Proguard arbeiten
Es funktioniert nicht, wenn der Map-Schlüssel ein Array ist
[gradle] pathingJar funktioniert nicht, wenn der Klassenpfad Leerzeichen enthält
[Quarkus] Eine Falle, die nicht funktioniert, selbst wenn Sie das GCP Pub / Sub-Beispiel so wie es ist kopieren und einfügen