2010-08-02 6 views
0

Cette question comporte en réalité deux parties.Modification du flux de travail d'application pour utiliser TabActivity

La première partie:

J'ai développé ma première application pour quelques semaines. J'ai 5 écrans et tout semble bien. Cependant, je considère changer la navigation de l'application à un TabView.

Je ne me suis pas beaucoup intéressé à cela, mais j'espère que quelqu'un pourra me faire gagner un peu de temps. Il semble que les gens ne placent généralement pas d'activités dans chaque onglet. Ils pointent simplement le contenu de l'onglet vers une vue. C'est là que mes principaux revers sont. 1) J'ai déjà des classes d'activités pleines de code et 2) Je ne peux pas deviner rapidement comment la structure d'une application utilisant TabView ressemble. Par exemple, où dois-je mettre le code du gestionnaire pour cliquer sur un bouton dans une vue? Est-ce que tout cela est simplement déversé dans l'activité TabView d'une manière ou d'une autre? Je voudrais que vous me donniez un bref résumé de ce que je suis en train de faire, des réponses à toutes les questions que vous pourriez me poser, et que je pointe vers quelques ressources pour créer des applications TabView. Une recherche rapide sur Google montre vraiment comment créer une activité TabView et y ajouter quelques onglets. Le code ne va pas plus loin. Par exemple, disons que j'ai un fichier XML de mise en page à afficher dans un volet de contenu de mon onglet, où le code va-t-il cliquer sur un bouton que j'ai dans cette mise en page?

La deuxième partie:

J'ai ajouté un TabActivity pour envelopper les activités que je cours en ce moment je Activités peuplant le contenu de mes onglets (bien que je voudrais finalement faire dans. la mode la plus efficace, qui ne semble pas avoir des activités sous forme d'onglet). J'ai remarqué quelque chose d'assez ennuyeux. Mon activité principale est une activité que j'ai écrite pour que mon utilisateur se connecte à son compte. Une fois connecté, ils sont redirigés vers mon activité d'onglet. Voici ce qui se passe:

Lorsque je suis sur mon activité d'onglet et que je "minimise" l'application en cliquant sur le bouton Accueil et que je la relance, je ne suis pas ramené à l'activité d'onglet. Je suis pris à mon journal d'activité. Pourquoi? Je n'ai pas le mode de lancement de mon activité d'onglet défini sur singleInstance ... ou est-ce singleInstance par défaut? Comment puis-je faire redémarrer l'application en affichant l'activité de tabulation (idéalement en définissant un paramètre, en supposant que je fais quelque chose de mal, sans avoir à sauvegarder ces données quelque part et à les lire et à me dire quoi faire)?

Merci pour votre temps et aider

+0

Quel est le mode de lancement de votre activité de connexion? Cela ne doit pas être 'singleTask' pour que cela fonctionne. Si vous mettez la sortie logcat dans les méthodes onCreate et onDestroy des deux activités, quel est l'ordre des événements lorsque vous démarrez -> connectez-vous -> appuyez sur home -> relancer? –

+0

Actuellement, il est "standard" car je n'ai pas défini launchMode sur mon identifiant de connexion. Cependant, je n'ai pas d'historique défini sur true. – Andrew

+0

La suppression de noHistory semble avoir résolu mon problème – Andrew

Répondre

0

Je n'ai pas un commentaire sur l'opportunité d'éviter l'utilisation des sous-activités TabActivity. Comme pour les gestionnaires - si vous n'allez pas intégrer des vues au lieu des activités, alors tous les paramètres du gestionnaire de type android:onclick dans votre mise en page XML appellent des méthodes sur TabActivity. C'est parce qu'ils vont à des méthodes sur les vues Context, qui est généralement l'activité contenant le plus proche. Si vous souhaitez fractionner votre code sans utiliser Activités, je crois que vous devrez utiliser les appels findViewById dans les affichages de contenu de l'onglet après les avoir configurés, et lier les gestionnaires manuellement à partir de là dans votre code.

+0

C'était ma meilleure estimation, je ne trouve tout simplement pas d'exemples décents. Savez-vous de tout ce que vous pourriez me lier? Et suis-je en train de regarder un fichier huuuuge TabActivity? Je prévois d'avoir environ 10 écrans quand j'aurai fini. Merci pour votre aide – Andrew

+0

Je ne connais pas de bons exemples, malheureusement. Si vous devez éviter d'utiliser des sous-activités, je vous conseille de configurer des classes séparées pour conserver la logique de chaque onglet. Construisez chacun en passant la vue supérieure de sa tabulation dans 'onCreate 'du TabActivity et demandez-lui de se lier à tous les événements dont il a besoin. –

+0

Je n'ai pas * besoin * d'utiliser des sous-activités, mais si c'est le moyen le plus efficace d'implémenter une TabActivity, c'est ce que je voudrais faire. Cela soulève toutefois certaines préoccupations. Par exemple, disons qu'il y a un bouton sur la vue A qui lance la vue B. Puis-je avoir l'affichage de la vue B dans le même onglet? Lorsque View A remplit à nouveau l'écran, n'aura pas à recharger toutes les données? Dans quelques endroits, j'utilise aussi startActivityForResult. Sans utiliser les activités, cela me met dans une situation difficile, oui? – Andrew

Questions connexes