comment recharger menu android dans la même activité?
J'ai un menu dans mon application android. Quand je clique sur ajouter des favoris, j'ai besoin de recharger les options de menu, les faisant apparaître del favoris dans les options et apparaissent pas ajouter des favoris.
Je ne veux pas utiliser de rechargement de l'activité en raison de la touche retour.
Mon code:
public boolean onCreateOptionsMenu(Menu menu) {
try
{
MenuItem menuInicio = menu.add(INICIO, INICIO, 0, "Início");
menuInicio.setIcon(android.R.drawable.ic_menu_edit);
MenuItem menuBusca = menu.add(BUSCA, BUSCA, 0, "Buscar");
menuBusca.setIcon(android.R.drawable.ic_menu_search);
SubMenu menuFavoritos = menu.addSubMenu(FAVORITOS, FAVORITOS, 0, "Favoritos");
if(!phytoterapicContent.getPhytoterapicItem().getIsFav())
menuFavoritos.add(FAVORITOS, ADD_FAV, 0, "Adicionar aos Favoritos");
else
menuFavoritos.add(FAVORITOS, DEL_FAV, 1, "Remover dos Favoritos");
menuFavoritos.add(FAVORITOS, LIST_FAV, 2, "Listar Favoritos");
menuFavoritos.setIcon(android.R.drawable.star_off);
}
catch (Exception e) {
}
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case INICIO:
Intent it = new Intent(ShowPhytoterapicActivity.this, HomeActivity.class);
startActivity(it);
break;
case BUSCA:
Intent it3 = new Intent(ShowPhytoterapicActivity.this, ShowSearchParametersActivity.class);
startActivity(it3);
break;
case ADD_FAV:
try {
Dao<PhytoterapicItem, Integer> phytoterapicItemDao = getHelper().getPhytoterapicItemDao();
phytoterapicContent.getPhytoterapicItem().setIsFav(true);
phytoterapicItemDao.update(phytoterapicContent.getPhytoterapicItem());
Toast.makeText(ShowPhytoterapicActivity.this, "Adicionado aos Favoritos", Toast.LENGTH_LONG).show();
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
break;
case DEL_FAV:
try {
Dao<PhytoterapicItem, Integer> phytoterapicItemDao = getHelper().getPhytoterapicItemDao();
phytoterapicContent.getPhytoterapicItem().setIsFav(false);
phytoterapicItemDao.update(phytoterapicContent.getPhytoterapicItem());
Toast.makeText(ShowPhytoterapicActivity.this, "Removido dos Favoritos", Toast.LENGTH_LONG).show();
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
break;
case LIST_FAV:
Intent it5 = new Intent(ShowPhytoterapicActivity.this, ShowFavoritesActivity.class);
startActivity(it5);
break;
}
return true;
}
Merci!
OriginalL'auteur Fabiano Palaoro | 2012-06-25
Vous devez vous connecter pour publier un commentaire.
utilisation onPrepareOptionsMenu
Préparer le standard de l'Écran des options de menu à afficher. Ceci est appelée juste avant que le menu est affiché, chaque fois qu'il est montré. Vous pouvez utiliser cette méthode pour efficacement activer/désactiver les éléments ou autrement modifier dynamiquement le contenu.
Veuillez noter deux points
1 - Si possible, il suffit d'activer ou de désactiver l'élément de menu ou semble possible dans votre cas peut changer le titre du même menu de travailler en raison de menu.clear(); peut-être besoin de plus d'attention lors de la manipulation
2 - comme par lien fourni par Atlos
Sur Android 2.3.x et inférieur, le système d'appels onPrepareOptionsMenu() chaque fois que l'utilisateur ouvre le menu des options (
presses the Menu button
).Sur Android 3.0 et supérieur, le menu d'options est considéré comme toujours être ouvert lorsque les éléments de menu sont présentés dans la barre d'action. Lorsqu'un événement se produit et que vous voulez effectuer un menu de mise à jour,
you must call invalidateOptionsMenu()
pour demander que l'appel système onPrepareOptionsMenu().OriginalL'auteur Dheeresh Singh
Voici un lien pertinent: http://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu
Qu'elle dépend de la version d'Android que vous ciblez. Vous ne savez pas si vous avez lu cette partie encore, mais tout autre conseil que j'ai ne serait-ce verbatim.
OriginalL'auteur trevor-e