web-dev-qa-db-fra.com

Devrait utiliser Android: showAsAction lorsque vous n'utilisez pas la bibliothèque appcompat

J'ai un problème étrange, j'utilisais un fichier menu.xml dans mon application Android comme ceci:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
  xmlns:compat="http://schemas.Android.com/apk/res-auto" >

    <item
        Android:id="@+id/action_refresh"
        Android:orderInCategory="100"
        Android:title="@string/action_refresh"
        Android:icon="@drawable/toc"
        compat:showAsAction="always"/>
</menu>

et cela fonctionnait bien, mais il y a quelques jours, je mettais à jour mon Eclipse vers la dernière version, et après cela, l'application: showAsAction = "always" affiche l'erreur: 

Devrait utiliser Android: showAsAction lorsque vous n'utilisez pas la bibliothèque appcompat Après cela, les icônes de la barre d’action ont été déplacées vers la barre de débordement et ne sont plus affichées dans la barre d’action.

de toute façon, la bibliothèque appcompat est le parent de mon style de base . que dois-je faire pour résoudre ce problème?

14
user1597278

Vous devez faire trois choses-

  1. Ajoutez ces 3 choses xmlns:tools="schemas.Android.com/tools" tools:context="com.example.sample.YourActivity" xmlns:yourapp="http://schemas.Android.com/apk/res-auto" à votre tag <menu>

    avec le xmlns:Android="http://schemas.Android.com/apk/res/Android" habituel

  2. Ajoutez yourapp:showAsAction="ifRoom" à votre <item>.

  3. Enfin, nettoyez votre projet via Projet -> Nettoyer ...

La dernière étape est ce qui l'a résolu pour moi. Il suffit de nettoyer le projet (ils peuvent être tellement sales parfois)

Voici à quoi ressemble le code final:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="schemas.Android.com/tools"
tools:context="com.example.sample.YourActivity"
xmlns:yourapp="http://schemas.Android.com/apk/res-auto" >

<item
    Android:id="@+id/action_share"
    Android:orderInCategory="100"
    Android:title="Share"
    Android:icon="@drawable/ic_share_white"
    yourapp:showAsAction="ifRoom" />

</menu>
18
Advait S

Cela fonctionne pour moi, j'ai utilisé appcompatlibrary:

compat:showAsAction="always"

au lieu de:

app:showAsAction="always"

Et pour utiliser compat: showAsAction = "always", Dans menu.xml, incluez la ligne:

<menu   
   ......
  <!-- include the below line -->
    xmlns:compat="http://schemas.Android.com/apk/res-auto" >
13
Mohammed Ali

Face au même problème. Ces deux options ont fonctionné pour moi:

1.Including - xmlns: compat = "http://schemas.Android.com/apk/res-auto"> puis en utilisant: "compat: showAsAction =" ifRoom "/>"

2. Ne pas inclure le compat et simplement utiliser: app: showAsAction = "ifRoom" />

PS: Utiliser Android Studio.

5
Santosh Pillai

Devrait utiliser Android: showAsAction lorsque vous n'utilisez pas la bibliothèque appcompat

Problème: garantit que les éléments de menu utilisent le bon espace de nomsId: AppCompatResource

Lorsque vous utilisez la bibliothèque appcompat, les ressources de menu doivent faire référence à showAsAction dans l’application: namespace, pas à l’Android: namespace.

De même, lorsque vous n'utilisez pas la bibliothèque appcompat, vous devez utiliser l'attribut Android: showAsAction.

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
   xmlns:tools="http://schemas.Android.com/tools"
   xmlns:compat="http://schemas.Android.com/apk/res-auto" >

    <item
        Android:id="@+id/action_refresh"
        Android:orderInCategory="100"
        Android:title="@string/action_refresh"
        Android:icon="@drawable/toc"
        tools:ignore="AppCompatResource"
        compat:showAsAction="always"/> 
</menu>
0
z.houbin

Tout ce que vous avez à faire est d'ajouter la ligne suivante à votre élément item pour supprimer l'avertissement. Avoir l'espace de noms compat vs app pour "http://schemas.Android.com/apk/res-auto" ne fait rien de spécial.

tools:ignore="AppCompatResource"

code complet:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
      xmlns:compat="http://schemas.Android.com/apk/res-auto" >

    <item
        Android:id="@+id/action_refresh"
        Android:orderInCategory="100"
        Android:title="@string/action_refresh"
        Android:icon="@drawable/toc"
        tools:ignore="AppCompatResource"
        compat:showAsAction="always"/>
</menu>

Remarque: la balise compat peut être app ou celle que vous souhaitiez.

0
Smalls