Мне было интересно, как я могу улучшить способ обработки доступа к пунктам меню в моем приложении.
Прежде всего, у меня есть активность входа в систему, когда пользователь входит в систему и, если это удастся, получает список всех пунктов меню, к которым он может иметь доступ.
Затем в каждом упражнении мне нужно запустить метод, чтобы скрыть пункты меню, к которым у пользователя нет доступа.
Он называется setMenus
, а Список listaMenuMuestra
- это список, полученный при входе в систему
public void setMenus(List<ListaMenu> listaMenuMuestra){
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
Menu nav_menu = navigationView.getMenu();
for(int i = 0; i < listaMenuMuestra.size(); i++){
try{
int idMenu = getResources().getIdentifier(listaMenuMuestra.get(i).getIdMenu(), "id", getPackageName());
nav_menu.findItem(idMenu).setVisible(true);
}catch (Exception ex){
Log.d("error","error");
}
}
Вот мой activity_main_drawer.xml
. По умолчанию все предметы невидимы.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_inicio"
android:icon="@drawable/ic_menu_home"
android:title="Inicio"
android:visible="false"/>
<item
android:id="@+id/nav_ultimas"
android:icon="@drawable/ic_menu_send"
android:title="Últimas consultas"
android:visible="false"/>
</group>
<item android:title="Estadísticas"
android:id="@+id/nav_tituloestadisticas"
android:icon="@drawable/ic_insert_chart">
<menu>
<item
android:id="@+id/nav_torta"
android:icon="@drawable/ic_pie_chart"
android:title="Gráfico de torta"
android:visible="false"/>
<item
android:id="@+id/nav_lineal"
android:icon="@drawable/ic_show_chart"
android:title="Análisis por fechas"
android:visible="false"/>
</menu>
</item>
</menu>
«Проблема», с которой я сталкиваюсь, заключается в том, что у меня много Активов, и мне кажется довольно странным запускать setMenus
для каждой Деятельности.
Так что вопросы Есть ли лучший способ обработать доступ к элементам меню с помощью нескольких активаций и NavigationDrawer? Можно ли вызвать setMenus
только один раз и сохранить эти изменения во всех действиях?