Как заменить Android NavigationView HeaderView

У меня есть два разных макета заголовка xml и я хочу переключаться между ними программно. Моя проблема в том, что старый макет не заменяется новым, а вместо этого я получаю два макета заголовков. Я прочитал много Ответов 1, Ответ 2, но это не работает.

Вот что я пытаюсь: и если я выполню этот код 3 раза, у меня будет 3 заголовка вместо замены макета заголовка. Я думаю, что я должен удалить navigate.getHeaderView(0) сначала но как?

NavigationView navigate = (NavigationView) findViewById(R.id.navigation_view);
    navigate.getMenu().clear();
    navigate.inflateMenu(R.menu.menu_navigation_exit);
    navigate.inflateHeaderView(R.layout.navigation_view_header_exit);
    View header = navigate.getHeaderView(0);
    streetViewImage = (ImageView) header.findViewById(R.id.street_view_image);
    streetViewImage.set....
    ...

1 ответ

Решение

Вам нужно сохранить ссылку на представление заголовка, а затем удалить ее, если вы хотите заменить ее чем-то другим.

navigate.removeHeaderView(previousHeaderView)

Другие вопросы по тегам