IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Rafraichir ou redémarrer une activity


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut Rafraichir ou redémarrer une activity
    Bonjour,

    Voila en gros mon probleme.
    J'ai 4 tabs, et dans chacunes d'elles une activity....

    L'application fonctionne avec une base sqllite et une des activity permet justement d'afficher la liste des enregistrements de la base.

    J'ai egalement une autre activity dans un autre Tab qui permet de télécharger une base sqllite à jour.

    Or quand je me synchronise avec le site qui genere la base sqllite, cette derniere s'enregistre bien au bon endroit, mais quand je reviens sur mon activity qui liste les enregistrements, celle ci ne se met pas a jour. Je suis obligé de killer l'appli et la redemarrer pour voir les changements...

    Je ne peux pas dire a la fin de la synchro : "mets a jour la liste" car il est possible que l'utilisateur ne passe pas par l'activity qui liste les enregistrements avant de faire la synchro (donc l'activity n'aura pas été lancé).
    Je ne peux pas non plus envoyer de notifydatachanged car je ne suis pas dans la meme activity et cela m'obligera a refaire un traitement pour recharger les infos

    Ce que j'aimerais, c'est obliger l'activity a recharger à chaque fois les données depuis la base...
    Ou alors, placer dans une variable globale (public static) un booleen qui si il est placé à 1, oblige l'activity a recharger les infos depuis la base...

    Mon probleme est le suivant :
    Quel est la commande qui permet de dire a une activity : Recharge les données

    Merci d'avance pour vos avis éclairé...

    Cadoudal56

  2. #2
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 264
    Par défaut
    Peut être recreate() Since: API Level 11 :
    http://developer.android.com/referen...recreate%28%29

    Edit :
    Je ne sais pas comment ça marche recreate() pourtant ça fait parti d'Activity.

    Tu peux relancer la même Activity et la finish() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    startActivity(starterIntent);
    finish();
    Cela dit redémarrer l'Activity n'est sans doute pas la bonne solution.
    Si au premier démarrage elle peut aller chercher les données sur la base, il doit bien exister une solution de effectuer à nouveaux cette opération.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Par défaut
    Je pense qu'en utilisant le onResume() de l'activité qui affiche les enregistrements vous devriez arriver à faire ce que vous voulez.

    Il suffirait de déterminer si la base est nouvelle ou non et dans le cas d'une nouvelle base relancer le chargement des données.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Bonjour,

    Comme le dit Aerinder tu peux recharger tes données dans la méthode onResume et pour savoir si tes données ont été modifiées tu peux injecter un boolean dans ton tabHost via setTag().

  5. #5
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Cela dit redémarrer l'Activity n'est sans doute pas la bonne solution.
    Sur ce premier point je suis d'accord avec thierrybenji , cela te prendra beaucoup de temps de process pour pas grand chose .

    Je pense qu'en utilisant le onResume() de l'activité qui affiche les enregistrements vous devriez arriver à faire ce que vous voulez.

    Il suffirait de déterminer si la base est nouvelle ou non et dans le cas d'une nouvelle base relancer le chargement des données.
    Effectivement pour se mettre à jour lorsque l'activity deviens sélectionné dans ta tab cela se fait dans le OnResume .

    Maintenant pour le rechargement de donnée je te conseille de rester sur un notifydatachanged sur ta liste dans un procédure de l'activity contenant cette liste .

    Tu peux avoir un connexion entre ta TabAcitivy et tes Activity , il te suffira alors de controller l'état de ta base de donné dans ta TAbActivity laquelle sera prévenu par l'activity gérant celle ci .

    Dans le onResume de l'activity affichant ces données tu remets à jour ton adapter et tu le signifie à ta liste.
    Or quand je me synchronise avec le site qui genere la base sqllite, cette derniere s'enregistre bien au bon endroit, mais quand je reviens sur mon activity qui liste les enregistrements, celle ci ne se met pas a jour. Je suis obligé de killer l'appli et la redemarrer pour voir les changements...
    Maintenant ou stockes tu tes données ?

    Car si tu les stockes sur une base de donnée interne ou dans une variable, il te suffira te positionner un observer sur ta bd ou variable à partir de ton activity gérant l'affichage , tu seras comme cela prévenue de tout changement de tab , et là plus de problème de tag ou de onResume.

    http://developer.android.com/referen.../Observer.html

  6. #6
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Ok, je vais essayer de faire un truc dans le onResume de mon acitivity...

    Dans le main de mon activity je charge une table config dans une hashmap que j'ai defini en public static de maniere a ce que ses données soit accessible depuis n'importe ou dans l'appli... Je vais placer mon booleen la dedans et appliquer une méthode onResume sur mon activité...

    Merci beaucoup, je vous tiens au courant

    [EDIT]
    Bon ben cela a fonctionner nickel. Apres deux ou trois ajustements qui m'ont permis de trouver une ou deux erreurs cela a bien fonctionner comme vous l'avez décrit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    @Override
    	public void onResume()
    	{
    	    if(maPremPage.myConfig.get("newSynchro") == "1") {
    	    	//rechargement des données dans la liste
     
                    //On renvoi le tout a l'adapter
                    adapter=new myAdapter (this, allData);
    	        adapter.notifyDataSetChanged();
    	        adapter.addListener(this);
    	        list.setAdapter(adapter);
     
                    maPremPage.myConfig.remove("newSynchro");
    	    }
    	    super.onResume();
    	}
    maPremPage.myConfig étant la variable myConfig définie en public static HashMap<String, String> dans ma premiere page de mon appli.
    Evidemment a la fin de ma synchro j'ai mis un :
    maPremPage.myConfig.put("newSynchro", "1");

    En combinant ces trois petites choses on peut donc avoir la main sur le rafraichissement des données de la page.

    Merci pour votre aide
    [/EDIT]

    @+
    Cadou

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rafraichir une activity
    Par titou624 dans le forum Android
    Réponses: 4
    Dernier message: 15/04/2010, 11h15
  2. redémarrer une base Plantée
    Par cbleas dans le forum Contribuez
    Réponses: 1
    Dernier message: 02/03/2007, 16h42
  3. Rafraichir affichage pendant une fonction
    Par E.Bzz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/02/2007, 12h01
  4. [POO] Créer un user dans une Active Directory (LDAP)
    Par Invité dans le forum Langage
    Réponses: 15
    Dernier message: 17/06/2006, 00h46
  5. Comment redémarrer une application?
    Par liv dans le forum MFC
    Réponses: 5
    Dernier message: 24/01/2005, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo