2010-01-15 4 views
4

Je souhaite créer un menu d'options statiques pour tous mes écrans d'activité. Je ne veux pas remplacer onCreateOptionsMenu() dans chaque activité.Menu des options statiques

Depuis Menu classe est une interface avec un grand nombre de méthodes, il est difficile de créer un objet statique de la classe d'implémentation.

Une autre façon de faire la même chose?

Répondre

17

Si j'ai bien lu votre question, vous voulez le même menu dans toutes vos activités. Je peux penser à deux façons de le faire:

  1. Créer une sous-classe de Activity qui implémente onCreateOptionsMenu() et onOptionsItemSelected() (et peut-être onPrepareOptionsMenu). Ensuite, toutes vos classes Activity étendent cette sous-classe.

  2. Créez une méthode statique quelque part appelée quelque chose comme populateOptionsMenu() qui prend un Menu (et probablement un Context) comme arguments. Vos classes Activity peuvent ensuite l'appeler à partir de leurs méthodes onCreateOptionsMenu() pour remplir le Menu. Vous auriez également besoin d'une méthode statique processItemSelected() correspondante lorsque les éléments ont été cliqués.

L'option 1 semble la meilleure car elle ne nécessite pas le même bolierplate dans vos activités pour appeler les méthodes statiques.

+0

Merci beaucoup Dave :) –

+0

Voulez-vous dire que l'option 2 ne nécessiterait pas le même bolierplate? – jondavidjohn

+2

La première solution n'est pas une bonne idée car elle nécessite un héritage. Que faire si mes activités sont autres que l'activité (FragmentActivity, ListActivity, ...)? Je pense que nous devrions annuler l'héritage quand c'est possible. – Emerald214

Questions connexes