Dynamique des Menus dans la fenêtre des éléments
J'ai cette Mise en page:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- The ActionBar -->
<include
layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!-- The main content view -->
<FrameLayout
android:id="@+id/flContent"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<!-- The navigation drawer -->
<android.support.design.widget.NavigationView
android:id="@+id/nvView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white"
app:menu="@menu/drawer_menu"
app:headerLayout="@layout/nav_header"/>
Donc que, dans NavigationView
nous avons l'attribut:
app:menu="@menu/drawer_menu"
Et j'ai un XML id de menu de dossier.
Je veux faire dinamicament menus, c'est à dire, dans le code, je dois monter le 'MenuItem' objets et NavigationView
.
C'est correct?
C'est la meilleure pratique?
Est-ce possible?
Note: Mon code est de travailler avec static drawer_menu
, je veux l'améliorer.
Je suis en attente.
[MODIFIER]
Je le fais:
Menu menu = nvDrawer.getMenu();
for (KSMenuItem kmi : menus.values()) {
if (menu.size() == 0) {
menu.add(kmi.getId());
}
if (menu.getItem(kmi.getId()) == null) {
menu.add(kmi.getId());
}
MenuItem mi = menu.getItem(kmi.getId());
mi.setIcon(kmi.getIcon());
mi.setTitle(kmi.getTittle());
}
Mais cette erreur s'est produite:
06-27 15:26:15.538 15335-15335/? E/AndroidRuntime﹕ EXCEPTION FATALE: principal
Processus: com.exemple.sticdev30.newdrawer, PID: 15335
java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo{com.exemple.sticdev30.newdrawer/com.exemple.sticdev30.newdrawer.MainActivity}: android.contenu.res.Ressources$NotFoundException: String resource ID #0x1
KSMenuItem est un POJO avec mon menu données. Dans kmi.id-je informé de l'incrémental entiers...
Je suis waitning
OriginalL'auteur Dimmy Magalhães | 2015-06-26
Vous devez vous connecter pour publier un commentaire.
Semble
kmi.getId()
retourneint
(oulong
).Mais Menu.ajouter(int) ajoute menu avec le titre de la chaîne de ressources, ce qui est généralement représentée comme
R.string.something
, et pas pour habitude valeurs entières.Menu.ajouter(CharSequence) n'menu ajouter, à titre de CharSequence, de sorte que vous besoin de faire un peu de type int-à-conversion de chaîne de caractères comme
menu.add(kmi.getId() + "");
OriginalL'auteur WKBae
Vous pouvez re-gonfler
NavigationView
au moment de l'exécution avec 2 lignes de code à l'aide de méthode publiqueinflateMenu
. Dans cet exemple, j'ai re-gonfler avecnew_navigation_drawer_items.xml
OriginalL'auteur Nam Trung
Vous pouvez ajouter des menus dynamiquement par les étapes suivantes :
Étape 1. Obtenir l'objet de menu de Navigation de Vue La fenêtre des éléments.getMenu()
Step2. Ajouter un élément au menu à l'aide Menu.ajouter()
La méthode Menu.ajouter(int) attend une chaîne d'id de ressource. À partir des journaux de caisse cinquième ligne, il dit de la ressource(ressource de Chaîne) n'a pas trouvé.
OriginalL'auteur Neeraj Kumar
On peut dynamiquement ajouter/supprimer des éléments de menu.
Supposons que nous avons ce menu items
`
Dans l'Activité que nous pouvons ajouter ou supprimer des menuitems basé sur notre condition
Espère que ça va aider.
OriginalL'auteur IMRA