Aller au contenu

TabActivity et Base de données.


Recommended Posts

Salut le monde.

J'utilise pour le moment une TabActivity ( A) qui dans ses 2 onglets, contient les activités B et C.

Dans l'activité B, j'ai une liste d'élément fixes, et quand je clique sur les éléments de la liste, je veux les rajouter à la BD

Et l'activité C affiche les éléments sur lesquels j'ai cliqué.

(c'est un modèle très simplifié)

J'ai essayé toutes les possibilités posibles, donc j'aimerais savoir laquelle utiliser.

1) mon DbAdapter est dans l'activité A ( TabActivity)

J'ai donc ce bout de code dans A:

   mDbHelper = new NotesDbAdapter(this);
  mDbHelper.open();

et dans le code de B, sur un click:

A.mDbHelper.createFav(blabla);

en dans le code C, pour créer le cursorAdapter:

mCursor=A.mDbHelper.fetchAllFav();

Le petit couac, c'est que l'activité C n'affiche pas directement les éléments. Je dois quitter l'activité principale A et quand je reviens dedans tout s'affiche bien.

Il est à noter que dans mon premier "voyage" de l'onglet B vers l'onglet C, tout est actualisé si j'avais clické, les élements sont bien présents. Et ensuite, plus rien ne s'actualisera!

1) 2 DbAdapter dans les activités B et C ( TabActivity)

.

ca me semble tres mauvais comme idée non?

J'ai essayé aussi, mais c'est pas le top, c'est encore pire.

Des idées/ propositions?

Merci d'avance.

Profete

Modifié par Profete162
Lien vers le commentaire
Partager sur d’autres sites

Quelques pensées à la lecture de ton problème... à pondérer par le fait que je n'ai pas encore moi-même réllement mis en pratique les accès bases de données ni de TabActivity :

- Que tes activités B et C passent par une référence à A pour accéder aux données ne me semble pas être une super idée par rapport au cycle de vie des Activity. J'ai peur qu'il y ait un risque de conserver des références à A alors que le système pourra potentiellement l'avoir détruite... quoi que cela impliquerait que B et C le soient également... bof je ne sais pas mais intuitivement ca me fait tiquer

- Je ne vois pas pourquoi l'idée d'avoir un DBAdapter dans B et C serait mauvaise, au contraire cela me semblerait plus sûr par rapport au point précédent.

- A quel moment dans ton activité C as-tu implanté la récupération du contenu de la base ? Il faut s'arranger, je pense, pour aller la consulter à chaque fois que l'activité C revient au premier plan, donc d'après http://developer.android.com/images/activity_lifecycle.png dans le onResume().

Lien vers le commentaire
Partager sur d’autres sites

- Je ne vois pas pourquoi l'idée d'avoir un DBAdapter dans B et C serait mauvaise, au contraire cela me semblerait plus sûr par rapport au point précédent..

C'est ce que j'ai fait, mais il semble y avoir des problèmes.

Je peux rajouter un élément dans la base de donnée depuis l'activité B et fermer la BD, si je switche d'onglet pour aller dans la C et que je parcours la BD, il n'affiche pas l'élément que je viens juste de rajouter!!!

Pour que ca fonctionne, je dois quitter l'activité TabActivity A et la relancer. C'est très bizarre.

Lien vers le commentaire
Partager sur d’autres sites

Effectivement, c'est bien cela.

J'étais habitué à mes activités qui se ferment et repasse par un oncreate() chaque fois que je passe d'une fenêtre à l'autre.

Avec le tabactity, elles se mettent en veillent et reprennent au onresume! Un point pour Kevin!

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...