première question sur le débordement de la pile, excuses s'il n'est pas bien formé. P>
Je développe une application à onglets relativement complexes, et a déjà eu les bases configurées avant de passer des informations que l'activité groupe d'activités et tabactivité sont obsolètes et que le modèle préféré est d'utiliser des vues. p>
Je n'ai eu aucune difficulté à utiliser des vues, c'est une question sur l'architecture plutôt que sur la syntaxe (c'est pourquoi je n'ai pas posté de code). Spécifiquement, Comment devrais-je continuer à restructurer l'application pour utiliser des vues au lieu d'intention des activités lancées em>. P>
L'application a cinq onglets; Deux tiennent une seule disposition, pas de problème là-bas. Les trois autres onglets sont en cours d'exécution d'un groupe d'activités avec 2 à 5 activités différentes (c'est-à-dire une onglet exécutant une activité pour les réglages, où cliquer sur chaque vue démarre une nouvelle activité qui traitant ce paramètre particulier, appuyez sur la touche Retour, vous renvoie à l'activité de paramètres plus large. ). Si je devais garder chaque onglet comme tabactivité, il serait encore assez facile de modifier ces transitions internes vers des vues par opposition à des activités distinctes. P>
La question principale utilise uniquement des vues, aucun groupe tabactivité / activité du tout. La grande majorité des recherches que j'ai faites ont fait des discussions sur l'utilisation d'activités ou de vues, ou sur une syntaxe spécifique. Je n'ai pas pu rassembler une idée claire de la façon de faire la transition vers une vue sur l'ensemble de l'application. P>
Si je devais le faire, l'application entière ne fonctionnerait-elle pas maintenant dans une seule activité - celle qui héberge la mise en page à onglets? p> li>
Si (1) est vrai, comment gérer cela? Malgré l'obstruction d'activités d'activité, toute la documentation Android semble toujours indiquer qu'il est préférable d'utiliser des activités distinctes pour des aspects distincts des fonctionnalités - ce qui est logique. L'équipe de développement Android a-t-elle simplement décidé que les coûts de la pile et de l'appareil rendent la mise en œuvre de tabactivité inefficace? P> LI>
Si l'application est exécutée dans une seule activité qui gère des vues différentes pour chaque onglet (puis des vues différentes dans une languette si nécessaire), dois-je disposer d'une seule méthode onclick énorme pour gérer tous les clics de n'importe quelle vue cliquable , Traitement des entrées basées sur quelle vue est active? Ou devrais-je m'inscrire et désigner tous mes auditeurs par programme? P> LI>
avec une seule activité, aucun clic d'auditeur ou aucun récepteur de diffusion doit être exécuté tout le temps, consommant des ressources, même si inutile? P> LI>
Avec une seule activité, le bouton arrière quitterait l'application entière de tout point de sa fonctionnalité. Si j'utilise des vues, je ne devrais-je pas constamment remplacer sur AbackPressed () et gérer soigneusement le comportement de l'application pour la forcer à se comporter "comme une application Android?" P> Li>
Est-ce que je pense à cela complètement faux? Il est possible que j'essaie involontairement de recréer la fonctionnalité d'activité et de tabactivité en utilisant des vues à la place, lorsque je devrais adopter une approche de conception entièrement différente pour utiliser des onglets et des vues. P> li>
ol>
Lorsque les gens de Google disent que nous ne devrions plus utiliser des activités comme des onglets, et M. Mark Murphy est d'accord avec catégorie, je suis enclin à croire. Je n'ai tout simplement pas été en mesure de rechercher un moyen de changer sans recourir à la recrétation de nombreuses fonctionnalités d'activité à la main (qui inclurait probablement une variété de hacks sales). P>
L'appréciation à l'avance pour tous ceux qui sont disposés à aborder un sujet aussi vague et écrasé. P>
3 Réponses :
Utilisation de Fragments est la nouvelle norme pour effectuer des composants UI de style à onglets. Je pense que vous devez simplement les oublier parce qu'ils sont la pièce manquante à toutes vos questions ci-dessus. Bonne chance. P>
N'oubliez pas que l'utilisation de la bibliothèque de compatibilité apporte une prise en charge de fragments jusqu'à 1.6. P>
et ici A> est un tutoriel Google facile recommandé sur l'utilisation de fragments dans un tabhost. P>
Vous avez raison, j'ai des fragments complètement négligés. Très utile, merci.
@HendlerExploit, si je comprends correctement la documentation du fragment, nous ne voulons pas utiliser des activités distinctes pour chaque onglet, mais est i> considéré comme une bonne conception pour utiliser des fragments distincts pour chaque composant de fonctionnalités distinct?
Correct, des fragments peuvent être traités comme un groupe de logique de base. Pas contrairement à une activité mais avec des fragments, vous pouvez limiter la duplication de code en réutilisant les mêmes fragments de différents endroits.
environ 3) Sélectionnez votre application dans autant d'activités que vous avez différentes parties de l'application. Aujourd'hui, j'irais même pour des fragments qui peuvent être plus faciles composés de mises en page différentes lorsque vous par exemple. Faites l'application pour téléphone et tablette.
La plupart du temps, vous pouvez simplement configurer le ici the et au lieu d'onglets, j'irais que j'aurai sur le point de vue, ce qui rend l'OMI une expérience beaucoup plus naturelle avec simplement échanger des vues en glissant gauche et à droite (voir par exemple G + App ou application de marché) p> p> onclick code> auditeurs dans les fichiers de définition de la présentation XML respectifs tels que celui-ci:
android: onclick < / code> Points d'attribut à une méthode qui implémente le gestionnaire.
Vous n'avez pas besoin de désenregistrer quoi que ce soit. P>
Je suppose que j'ai laissé cela hors de la question initiale - la grande majorité de ma manutention de My Click se fait par des méthodes déclarées via Android: OnClick dans la mise en page XML. Dans ce cas, les auditeurs sont-ils uniquement actifs lorsque le fichier pertinent a été appelé avec SetContent () ou SeContentView (), de sorte que je n'ai pas besoin de vous inquiéter autrement?
Oui - et il est également possible d'utiliser une méthode pour plusieurs éléments d'interface utilisateur - vous obtenez la «vue d'appel» passée sous forme d'argument.
Dans ce cas, si je déclare Android: OnClick = "MyClickhandler" sur plusieurs vues, le même MyClickhandler (View V) sera appelé à tous, en passant dans la vue appropriée?
@HemightBetodd, pense à la façon dont la chose gonfle. Il correspond à la chaîne dans le XML à tout ce qui existe dans votre activité actuelle. Donc, oui, il utilisera la fonction que la fonction correspond à cette étiquette de chaîne lorsqu'elle est gonflée dans cette activité (et si vous gonflez un autre, celui-ci le remplacera).
@Dr. Drared, hm ... en effet. Une partie de la question est sans aucun doute que, même si j'ai commencé ici et là, c'est mon premier effort de créer une application complexe à Android et, en tant que tel, il existe un certain nombre d'aspects du cycle de vie et de l'inflation que je n'ai pas pleinement saisi. Merci pour l'aide.
@HeMightBetoddd ... Je comprends ... en particulier le mécanisme de l'inflation XML peut être très déroutant. L'idée est que le XML est traduit en objets Java au moment de l'inflation et avec un peu de magie associé à l'IDS détenu à R. La confusion est en ce que les identifiants R sont constants et inaltérables, tandis que l'espace mémoire occupé Par les objets XML est pris et libéré lorsque vous les gonflez et les libère. Mais gardez simplement à l'esprit que tout ce qui est stocké dans XML n'existe nulle part jusqu'à ce que vous ne le gonflez manuellement d'une manière ou d'une autre.
comme une réponse finale à ma propre question: p>
Utiliser des fragments dans des onglets a résolu tout le problème ci-dessus. P>
Ainsi, au lieu d'une activité définissant des onglets contenant d'autres activités, j'ai une grande fragmentation qui confère et bascule les vues des différents fragments. Les méthodes de clic définies dans le XML pour chaque vue de tabulation appartiennent à la fragmentation, et j'ai opté pour que chaque Onclick appelle une méthode correspondante dans le fragment approprié (transmission d'un contexte si nécessaire) afin que le code de manipulation de chaque vue peut séjourner par programme de manière programmante. classe appropriée. p>
Ceci est pour un téléphone utilisant le package de compatibilité, pas une tablette ou une nid d'abeille, donc je ne peux pas parler à ceux qui sont malheureusement. P>
Cette solution semble avoir bien fonctionné pour moi. Je recommande à quiconque en regardant le même problème à vérifier: p>
Poste du blog du PSECHECODER: http://thepsSeudocoder.wordpress.com/2011/ 10/04 / Android-Tabs-the-fragment-way / p>
Documentation Android sur les fragments: http://developer.android.com/guide/topics/fundamentals/fragments.html p>
la démo de l'API "onglets de fragment" http: // développeur .Android.com / Ressources / Samples / Apidemos / SRC / COM / Exemple / Android / API / App / Index.HTML # Fragment P>
Vraiment excellente question ... Bienvenue à la pile.