Dans mon NavigationView, j'ai une disposition d'en-tête avec l'identifiant «viewId» avec des boutons actifs. Pour configurer ces boutons, je fais ce qui suit dans l'activité onPostCreate
:
final View panel = findViewById(R.id.viewId);
panel.setOnClickListener(new View.OnClickListener() {
... setup goes here ...
});
Avec la nouvelle version de la bibliothèque de support Android, ( 23.1.0 ), la vue est introuvable, elle renvoie null. Avec les versions précédentes, cela fonctionnait bien. Est-ce un bug ou est-ce que j'utilise cette fonctionnalité de manière incorrecte? Si tel est le cas, comment accéder à la disposition de l'en-tête et y ajouter un comportement?
inflateHeaderView
, il attache la vue pour vous dans le bon calque dans leRecyclerView
avec le parent correct - ce que vous ne pouvez pas faire en externeNavigationView
.Désormais, avec la version 23.1.1 de la bibliothèque de support de conception, vous pouvez utiliser
la source
navigationView.getHeaderCount()
si vous avez plus d'un en-tête pour une raison quelconque.C'est comme ça que je l'ai fait en utilisant
ButterKnife
et ça marche pour moi.puis utilisez ce support de vue comme ceci:
la source
Pour moi, c'était la même situation avec 23.1.0, après la mise à jour, l'exception du pointeur nul est devenue. Dans ce cas, le
NavigatorView
look comme:J'ai essayé la proposition de solution d'ianhanniballake mais cela ne fonctionne pas. Puis j'ai gonflé avec la phrase:
Après cela, je peux trouver par identifiant toutes les vues définies dans la
nav_heard
mise en page.la source
la source
Dans Kotlin @Francois Dermu, le code est comme
la source
Version Kotlin.
la source