web-dev-qa-db-fra.com

Éléments d'action de la barre d'action non affichés

j'ai un code très simple, mais un problème que je ne peux pas résoudre même après une longue recherche sur Google. Je souhaite avoir des actions dans mon ActionBar, mais chaque fois que je lance l'application, tout ce que je vois est un ActionBar avec le logo de l'application et le titre, mais pas d'action .

Ce serait formidable, si vous pouviez m'aider, je manque probablement de la chose la plus évidente;)

Thats la méthode dans mon ActionBarActivity:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

Et voici le fichier .xml pertinent pour le ActionBar (nommé main_activity_actions.xml):

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item Android:id="@+id/action_search"
      Android:icon="@drawable/ic_action_search"
      Android:title="@string/action_search"
      Android:showAsAction="always"  />
<item Android:id="@+id/action_compose"
      Android:icon="@drawable/ic_action_compose"
      Android:title="@string/action_compose" 
      Android:showAsAction="always"/>
</menu>
24
Kilian Batzner

En effet, si vous utilisez la bibliothèque de support ActionCar AppCompat et ActionBarActivity, vous devez créer vos menus de manière différente de la méthode standard de création de menus XML dans ActioBarSherlock ou de la barre d'action par défaut.

Alors essayez ce code:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" 
      xmlns:app="http://schemas.Android.com/apk/res-auto">
      <item Android:id="@+id/action_search"
          Android:icon="@drawable/ic_action_search"
          Android:title="@string/action_search"
          app:showAsAction="always"  />
      <item Android:id="@+id/action_compose"
          Android:icon="@drawable/ic_action_compose"
          Android:title="@string/action_compose" 
          app:showAsAction="always"/>
</menu>

et signaler si cela fonctionne.

Remarque: vérifiez le préfixe supplémentaire xmlns:app qui devrait être utilisé à la place!

69
ManosProm

Assurez-vous que vous n'utilisez pas un style rendant vos actions invisibles.

Par exemple, si vous utilisez "Android: Theme.Holo.Light.DarkActionBar", vous obtenez une barre d'action noire pour que vous ne puissiez pas voir vos éléments noirs.

Basculez sur "Android: Theme.Holo.Light" et ils apparaîtront.

Regardez dans le fichier (par exemple) res/values-v14/styles.xml

6
Helge Mortensen

Voilà, vous devez ajouter le menu dans votre XML comme ceci:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <item
        Android:id="@+id/menu_settings"
        Android:orderInCategory="0"
        Android:showAsAction="always"
        Android:icon="@drawable/menu">
    <menu>
        <item Android:id="@+id/action_search"
            Android:icon="@drawable/ic_action_search"
            Android:title="@string/action_search"
            Android:showAsAction="always"  />
        <item Android:id="@+id/action_compose"
            Android:icon="@drawable/ic_action_compose"
            Android:title="@string/action_compose" 
            Android:showAsAction="always"/>
        </menu>
    </item>
</menu>
1
Peshal

Essaye ça:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return true;
}
0
Steve Benett