7
votes

Android - Comment faire une application complexe à onglets avec vues

première question sur le débordement de la pile, excuses s'il n'est pas bien formé.

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.

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 .

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.

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.

  1. 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?

  2. 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?

  3. 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?

  4. 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?

  5. 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?"

  6. 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.

    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).

    L'appréciation à l'avance pour tous ceux qui sont disposés à aborder un sujet aussi vague et écrasé.


1 commentaires

Vraiment excellente question ... Bienvenue à la pile.


3 Réponses :



1
votes

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 onclick auditeurs dans les fichiers de définition de la présentation XML respectifs tels que celui-ci: xxx

ici the 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.

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é)


6 commentaires

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.