В моем NavigationView у меня есть макет заголовка с идентификатором 'viewId' с активными кнопками. Чтобы настроить эти кнопки, я делаю следующее в действиях onPostCreate
:
final View panel = findViewById(R.id.viewId);
panel.setOnClickListener(new View.OnClickListener() {
... setup goes here ...
});
С новой версией библиотеки поддержки Android ( 23.1.0 ) представление не может быть найдено, оно возвращает ноль. С предыдущими версиями это работало хорошо. Это ошибка или я использую эту функцию неправильно? Если так, как получить доступ к макету заголовка и добавить к нему поведение?
inflateHeaderView
, он присоединяет View для вас в правильном слое вRecyclerView
с правильным родителем - что вы не можете сделать внешнеNavigationView
.Теперь, с выпуском 23.1.1 библиотеки поддержки проектирования, вы можете использовать
источник
navigationView.getHeaderCount()
если у вас есть более 1 заголовка по любой причине.Вот как я сделал это с помощью,
ButterKnife
и это работает для меня.и затем используйте этот держатель вида следующим образом:
источник
Для меня это была та же самая ситуация с 23.1.0, после обновления исключение нулевого указателя стало. В этом случае
NavigatorView
выглядит так:Я попробовал предложение ianhanniballake, но оно не работает. Тогда я надулся с предложением:
После этого я могу найти по id все виды, определенные в
nav_heard
макете.источник
источник
В Kotlin @Francois Dermu код будет как
источник
Котлин версия.
источник