Notez que le fichier de liaison n'a pas été généré automatiquement plusieurs fois et que j'en étais accro.
MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
Le code ci-dessus entraînera une erreur de compilation. Le nom de l'activité est MainActivity, mais la liaison de données est générée en fonction du nom du fichier de mise en page, de sorte que le nom de la classe générée est ActivityMainBinding. Je l'ai mal compris comme MainActivityBinding et j'en étais assez accro.
Je l'ai entouré d'une balise de mise en page comme celle-ci, mais elle n'est pas générée automatiquement
<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>
C'est parce que la description de xmlns: android est devenue TextView. Si vous placez ceci au bon endroit, il sera automatiquement généré.
<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>
Comme ça.
<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>
Pourquoi binding.myTextView n'est-il pas censé être généré automatiquement? Cela est dû au fait que l'ID est spécifié de manière incorrecte. Pour être exact, cela devrait être @ + id / my_text_view. Dans le cas de findViewById, cela fonctionne même s'il n'y a pas de +, mais il semble que DataBinding ne fonctionne pas.
Vous pouvez le corriger au format correct de @ + id comme suit.
<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>
Comme ça!
Si vous regardez souvent les onglets, ouvrez-vous et modifiez-vous le fichier de mise en page généré automatiquement?
Le fichier qui s'ouvre en cas d'erreur de construction est un fichier généré automatiquement, vous devez donc ouvrir et modifier manuellement le fichier d'origine. N'est-ce pas un bogue dans Android Studio 2.3?
Le contenu de la balise de données dans le code ci-dessous sera complété correctement, mais activity.getMyText ne le sera pas.
<?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>
Vous ne pouvez sauter que partiellement. Au début, je pensais que c'était une erreur d'écriture, mais cela semble être une spécification. C'est trop subtil, j'ai donc arrêté d'écrire onClick dans le fichier de mise en page.
Il s'agit probablement d'un bogue dans la fonction de refactoring d'Android Studio 2.3. Il semble qu'il soit nécessaire de reconnaître que la fonction de refactoring ne peut pas être utilisée essentiellement là où la liaison de données est utilisée, ou que la fonction de refactoring doit être utilisée avec prudence.
Recommended Posts