Beachten Sie, dass die Bindungsdatei nicht mehrmals automatisch generiert wurde und ich süchtig danach war.
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 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.
<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!
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?
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.
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