créer de nouveaux menuInflater ou getMenuInflater() de l'activité?
Je suis de la création de la nouvelle option de menu à l'intérieur du fragment, mais après la lecture de
http://developer.android.com/resources/articles/avoiding-memory-leaks.html
qui dit que c'est mieux d'utiliser du contexte de l'application de contexte de l'activité, j'ai peur d'utiliser getActivity().getMenuInflater()
Donc, en fait, qui de mieux
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
MenuInflater mInflater = new MenuInflater(getActivity().getApplicationContext());
mInflater.inflate(R.menu.simple_menu, menu);
}
Ou une activité d'appel
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
MenuInflater mInflater = getActivity().getMenuInflater();
mInflater.inflate(R.menu.simple_menu, menu);
}
et, quelles sont les différences entre les deux d'entre eux? ou..les deux sont la même chose?
Grâce.
OriginalL'auteur GAO-tsukai | 2011-10-15
Vous devez vous connecter pour publier un commentaire.
Ils sont très similaires. En regardant à travers la MenuInflator de la source, la seule chose qu'il utilise le contexte pour accéder aux fichiers de ressources. Ainsi, le contexte spécifique n'est pas question pour le MenuInflator.
Comme pour les fuites de mémoire, l'article de référence dit
À moins que vous passiez la MenuInflator (ou le Menu) dans une autre classe, alors elle est contenue dans l'activité et ne pas être en fuite.
MODIFIER
En outre
Activity.getMenuInflator()
est juste une méthode pratique pournew MenuInflator()
. En fait, c'est la méthode à l'intérieur de la classe d'Activité:Il est généralement préférable d'utiliser des méthodes pratiques puisqu'ils permettent à l'implémentation sous-jacente à changer dans les futures versions sans que vous ayez à modifier votre code. Par exemple, si la méthode ci-dessus est modifié pour renvoyer une instance mise en cache au lieu d'en créer un nouveau à chaque fois.
J'ai raté votre question au sujet de cette méthode. J'ai mis à jour ma réponse en conséquence.
merci, maintenant je sens que j'ai vraiment besoin de voir la source android...
OriginalL'auteur spatulamania
Vous devez utiliser
MenuInflater
instance qui est passé à la méthodepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
(avis de la 2ème argument)Il n'y a pas de réelle différence, parce que, normalement, vous "oubliez" dès que vous avez fini de l'utiliser, mais pourquoi auriez-vous besoin pour créer un si vous avez déjà l'un des arguments?
OriginalL'auteur Sarge Borsch
Changement de ceci :
:
OriginalL'auteur Kapil Bansal