2010-06-10 6 views
14

Existe-t-il un moyen d'afficher un MapView sans étendre MapActivity? J'ai d'autres classes d'activités que j'étends et je préférerais ne pas changer cela ... J'ai vu que vous pouvez gonfler en utilisant MapActivity, mais je n'ai trouvé aucune spécification/exemple sur la façon de le faire.MapView sans étendre MapActivity

+0

Quelle est l'autre classe? – Macarse

+0

le mien, qui met des choses différentes, a beaucoup de fonctions, des objets que j'utilise dans les activités –

+0

Je pourrais prolonger ma classe avec MapActivity, mais cela signifierait que toutes mes activités l'étendraient ... –

Répondre

6

Existe-t-il un moyen d'afficher un MapView sans étendre MapActivity?

Pas que je sache.

Je pourrais prolonger ma classe avec MapActivity, mais cela voudrait dire tous mes activités se prolonger

Ensuite, vous devez factoriser votre code, de sorte que vos activités ne sont pas tous hériteront de votre propre classe de base. L'héritage n'est pas une technique OO très flexible, particulièrement en Java.

+3

Je trouve très dommage que certains composants Android "officiels" exigent que votre activité hérite d'une classe de base spécifique, avec MapActivity et FragmentActivity étant deux exemples particulièrement agaçants. – Ralf

+0

"Ensuite, vous devez refactoriser votre code, de sorte que vos activités n'héritent pas toutes de votre propre classe de base.Héritage n'est pas une technique OO très flexible, en particulier en Java." Il est décevant que précisément le SDK Android ne s'applique pas cela – Ixx

+0

Je veux dire, c'est tellement faux et ennuyeux. Tout simplement parce que vous placez une vue cartographique quelque part, toute l'activité doit étendre MapActivity. Il est logique de mettre le code commun de toutes mes activités dans une superclasse commune, pas pour éviter l'héritage, juste parce qu'Android l'utilise incorrectement. Quelle est la prochaine étape, peut-être une TextViewActivity? – Ixx

0

Une manière pratique est de faire deux versions de votre activité de base d'origine et la seule différence entre elles est une extension d'activité et l'autre étend MapActivity (le même problème avec ListActivity).

Il existe des codes en double. C'est une mauvaise odeur, je sais. Mais ils sont presque identiques, vous pouvez simplement copier le fichier entier et faire une petite modification quand vous avez changé l'activité de base.

0

À l'heure actuelle, vous pouvez utiliser des fragments pour afficher la carte dans n'importe quel endroit de votre activité et votre activité principale ne doit pas étendre la mapactivité. vous avez une implémentation dans MapView in a Fragment (Honeycomb)

Questions connexes