Implémenter la nouvelle ActionBar d'Android : gérer l'erreur Theme.AppCompat.Light

La librairie ActionBar implique d'implémenter le thème AppCompat. Lors de l'exécution de ce dernier, une erreur peut produire.

La librairie ActionBar permet d'ajouter dans la fenêtre de l'application Android une barre d'action. Cette barre permet notamment d'afficher des icônes pour effectuer des actions rapides dans l'application. Pour pouvoir utiliser la barre d'action, il faut également implémenter le thème AppCompat, qui est le thème utilisé par cette barre. Il peut cependant se produire une erreur lors de l'exécution de l'application indiquant que la ressource pour l'utilisation du thème AppCompat n'a pas été trouvée.

Si vous utilisez Eclipse, il faut tout d'abord bien ajouter la librairie AppCompat à votre projet. Pour cela, ouvrez le menu File, puis cliquez sur l'option Import. Dans la fenêtre qui s'est ouverte, allez dans le dossier du sdk Android puis dans les sous-répertoires extrasandroidsupportv7, et choisissez appCompat. Si jamais votre librairie n'est pas sur la même partition de disque qu'Eclipse, vous devez cocher la case copy to workspace, sinon le projet ne fonctionnera pas. La librairie est alors importée dans Eclipse, il ne reste plus qu'à l'ajouter à votre projet. Pour effectuer cette manipulation, allez dans le menu Project, properties puis Android. Dans l'onglet library, sélectionnez l'option Add, et choisissez AppCompat. La librairie est maintenant importée dans votre projet.

Normalement, les méthodes de l'actionBar s'utilisent avec le préfixe android. Si vous utilisez la méthode android:showAsAction dans les objets du menu, vous serez obligé(e) de modifier le préfixe. Vous trouverez toutes les informations sur l'implémentation de l'actionBar dans le guide pour développeurs d'Android.

En plus de l'ajout de la librairie AppCompat, il faut modifier tous les fichiers styles.xml de votre application pour qu'ils utilisent bien le thème AppCompat à la place de l'ancien thème holo. Il y a 3 fichiers de styles différents à modifier. Ils ne sont pas tous obligatoirement présents dans votre application.

Le fichier res/values/styles.xml :

<style name=AppBaseTheme parent=android:Theme.Light>
/* Remplacez la ligne du dessus par la ligne du dessous */
<style name=AppBaseTheme parent=@style/Theme.AppCompat.Light>
Le fichier res/values-v11/styles.xml :
<style name=AppBaseTheme parent=android:Theme.Holo.Light>
/* Remplacez la ligne du dessus par la ligne du dessous */
<style name=AppBaseTheme parent=@style/Theme.AppCompat.Light>
Le fichier res/values-v14/styles.xml :
<style name=AppBaseTheme parent=android:Theme.Holo.Light.DarkActionBar>
/* Remplacez la ligne du dessus par la ligne du dessous */
<style name=AppBaseTheme parent=@style/Theme.AppCompat.Light.DarkActionBar>

Android