2011-05-27 1 views
2

J'ai un projet qui lie au niveau 11 de l'API. Quand je lance ceci sur des téléphones, et appuie sur la touche de menu, mon menu apparaît bien. Lorsque je cours sur un appareil qui exécute android 3.0.1, la touche de menu n'apparaît pas pour la même activité:La touche de menu n'apparaît pas pour mon application sur nid d'abeille?

Une idée pour laquelle la touche de menu ne s'afficherait pas pour cette activité?

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    menu.add(...); 
    return true; 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    menu.clear(); 
    menu.add(...); 
    return super.onPrepareOptionsMenu(menu); 
} 

La touche de menu n'apparaît-elle pas pour cette activité?

Merci

Mise à jour ----- --------------------

Après un peu plus la recherche, trouvé ce fil sur le même question: http://groups.google.com/group/android-developers/browse_thread/thread/c4b1b835060bd93f

Hackborn dit le bouton de menu est affiché si vous ne pas cible sdk 11. Ce que je faisais. J'ai donc une configuration très étrange maintenant:

<manifest> 
    <uses-sdk 
    android:minSdkVersion="5" 
    android:targetSdkVersion="10" /> 

    <application 
    android:hardwareAccelerated="true" > 
    </application> 
</manifest> 

et dans mes propriétés du projet, je suis lié à sdk 11. La raison pour laquelle je suis un lien vers sdk 11 est pour que je puisse utiliser le « hardwareAccelerated = true » drapeau dans le manifeste comme ci-dessus. Pour résumer, je suis lié à sdk 11 dans les paramètres du projet, mais en définissant targetSdkVersion = 10 dans le manifeste. Est-ce légitime? Je pensais qu'ils devraient correspondre,

Merci

Répondre

5

Il est légitime que cela fonctionne, ce n'est pas légitime en termes de normes d'expérience utilisateur Android. :)

La raison pour laquelle vous n'obtenez pas de bouton de menu dans la barre système lorsque vous ciblez API 11 est que nous l'affichons uniquement pour la prise en charge des applications héritées. Les nouvelles applications doivent utiliser la barre d'action pour présenter les options de votre activité. La barre d'action sera peuplée par les mêmes mécanismes qui peuplent votre menu d'options sur les versions précédentes.

Ciblez l'API 11 et assurez-vous de ne pas désactiver la barre de titre dans votre thème ou dans votre activité et vous obtiendrez une barre d'action par défaut. Le menu apparaîtra dans le coin supérieur droit.

+0

C'est la réponse la plus horrible que je l'ai jamais vu! Donc vous le désactivez volontairement pour TOUTES les applications et maintenant vous me dites que si je veux cibler SDK> 10 je dois perdre des ANNÉES de temps de développement pour réorganiser l'application entière juste parce que ?? !!? Je te déteste Google, tu deviens encore plus diabolique que Micro $ oft !! –

1

C'est légitime: il va construire bien, et fonctionnera bien aussi. Je ne suis au courant d'aucun problème qui en résulterait: les docs disent explicitement que vous pouvez cibler une version inférieure à celle que vous construisez.

1

supprimer simplement android:targetVersion attribut dans le fichier manifeste et utiliser android:minSdkVersion="8" version minsdk devrait être inférieure à la version de votre appareil

Questions connexes