1

J'ai une application Android avec une activité principale qui est le tabhost. J'ajoute plusieurs onglets au tabhost avec l'intention de plusieurs activités.Création d'une activité de tabulation forcée Android?

Mon problème est que ces activités ne sont pas créées (onCreate n'est pas appelé) jusqu'à ce que je clique sur l'onglet. C'est un problème parce que j'ai besoin d'enregistrer des broadcastreceivers: il peut y avoir des diffusions qui sont envoyées - avant - un onglet particulier est ouvert.

j'ai essayé de contourner ce problème en:

  • Réglage mes récepteurs comme statique et l'enregistrement d'un autre endroit. Ce n'est pas possible parce que j'ai besoin d'appeler des méthodes.
  • Appel dans tabHost.setCurrentTabByTag (the_tag), puis revenez à mon onglet racine. Cela ne fonctionne que parfois et c'est une solution très laide.
  • Ne pas utiliser les activités mais simplement utiliser des vues à la place. Ce n'est pas non plus une solution très élégante car elle transforme mon activité tabHost en une classe de maître énorme faisant toutes sortes de choses sans rapport.

Quelle serait la meilleure solution à ce problème? Est-ce que je peux faire en sorte que les émissions envoyées soient 'en file d'attente' au lieu de disparaître quand il n'y a pas de récepteurs? Puis-je forcer la création des activités de mon onglet (ce n'est pas un problème, mes utilisateurs sont presque sûrs d'utiliser chaque onglet à certains moments)? D'autres idées?

modifier:

Selon CommonsWare dans cette question; Update tabs from a tab's activity in a Android TabHost

Il est peut-être une meilleure idée de mettre en œuvre les onglets que des vues plutôt que des activités ... Cela change un peu ma question:

Comment puis-je séparer différents types de logique dans la même activité? Pas vraiment hâte de 30+ l'uberactivité de la méthode.

Répondre

0

J'utiliserais TabActivity comme récepteur de diffusion et non les activités de l'onglet. Cela vous donnerait un code plus propre et plus de contrôle sur la façon dont vous gérez les émissions

+0

Comment cela résoudrait-il quelque chose? Il me reste encore des activités d'onglet non initialisées dans lesquelles les méthodes doivent être appelées lorsque les diffusions arrivent. –

+1

Vous ne devriez essayer et appeler les méthodes d'une activité en cours d'exécution. Je ne pense pas qu'il soit possible d'avoir toutes les activités d'un tabhost initialisé et fonctionnant en même temps. Ce serait une mauvaise pratique de le faire, car cela entraînerait une perte importante de la batterie et du processeur du téléphone. Si une diffusion se produit alors que votre activité est en pause ou n'est pas encore initialisée, vous pouvez la stocker dans votre TabActivity et la transmettre à l'activité correspondante uniquement lorsque cette activité est reprise. – m6tt

+0

@disretrospect Pourriez-vous montrer un exemple, comment pouvons-nous passer les données de TabActivity à childActivity pertinent quand elles sont créées/reprises? THX – zeratul021