2015-09-25 2 views
0

Я использую android.support.design.widget.NavigationView. Во время жизни этого вида элементы меню изменяются (удаляются, переименовываются и добавляются) динамически. Однако эти изменения не отображаются напрямую, а только после того, как представление было уничтожено и создано снова (например, при изменении ориентации).NavigationView: Отметить меню как грязное

Есть ли способ заставить его обновить меню?

ответ

1

Добавление динамического меню в NavigationView в настоящее время является ошибкой в ​​библиотеке поддержки проектирования. И я вижу, что кто-то сообщил об этом для отслеживания источника ошибок в Android. Поэтому подождите, пока ошибка не будет исправлена. Но если вы хотите временное решение, вы можете это сделать. Во-первых добавить динамическое меню ..

navView = (NavigationView) findViewById(R.id.navView); 
Menu m = navView.getMenu(); 
SubMenu topChannelMenu = m.addSubMenu("Top Channels"); 
topChannelMenu.add("Foo"); 
topChannelMenu.add("Bar"); 
topChannelMenu.add("Baz"); 

После добавления Ваше меню просто написать ниже код ..

MenuItem mi = m.getItem(m.size()-1); 
mi.setTitle(mi.getTitle()); 

https://code.google.com/p/android/issues/detail?id=176300

+0

К сожалению, это не работает в моем случае; У меня есть три меню, которые построены из xml, к которым я добавляю и удаляю элементы программно. Присвоить задание, как было предложено, не заставляло подменю перерисовываться, как было предложено; Другое решение, которое я нашел, это добавить еще одно временное подменю в меню навигации и удалить его снова, что, к сожалению, также не помогло. – heyarne

Смежные вопросы