2017-04-17 1 views
0

Dans mon application, je dois changer le menu du navigationView, lorsque je clique sur l'en-tête
First state
Second state
Je voulais obtenir le menu actuellement actif de ma navigationAfficher pour basculer entre les deux menus. Voilà ce que je l'ai écrit à ce jour:Obtenez le menu actuel de navigationView comme R.menu

public void toggleMenu(){ 
    navigationView.getMenu().clear(); 
    navigationView.inflateMenu(R.menu.menu_trips); 
} 

au lieu de gonfler le même menu tout le temps, je dois créer un si pour gonfler le menu qui est pas actif, quelque chose comme ceci:

if (navigationView == R.menu.menu_trips){ 
    navigationView.inflateMenu(R.menu.activity_main_drawer); 
} else if (navigationView == R.menu.activity_main_drawer){ 
    navigationView.inflateMenu(R.menu.menu_trips); 
} 

Je ne veux pas ajouter un MenuItem, je veux juste remplacer le menu. Le dégager puis gonfler est la meilleure option que j'ai trouvée. Si vous avez une meilleure solution, s'il vous plaît dites-moi :)

Répondre

0

Vous ne pouvez pas obtenir l'ID de menu de la classe Menu. Je vous suggère de conserver une variable globale qui conserve votre identifiant de menu actuel. Ou vous pouvez comparer les premiers éléments pour comprendre quel menu est actuellement actif.

+0

Merci pour votre aide rapide! Je veux obtenir l'ID du menu actuel, pas l'élément actif du menu. Ou devrais-je juste comparer le premier menuItem et obtenir, sur cette base, le menu actif? –

+0

Mis à jour ma réponse. – mertsimsek

0

a résolu le problème:

String activeMenu; 

protected void onCreate(){ 
    activeMenu = "main"; 
} 

public void toggleMenu(){ 
    navigationView.getMenu().clear(); 
    if (activeMenu.equals("main")){ 
     navigationView.inflateMenu(R.menu.menu_trips); 
     activeMenu = "trips"; 
    } else if (activeMenu.equals("trips")){ 
     navigationView.inflateMenu(R.menu.activity_main_drawer); 
     activeMenu = "main"; 
    } 
}