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 :

ProgressBar mise à jour depuis une autre classe


Sujet :

Android

  1. #21
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Dans ce cas il suffit de créer une interface liée à l'async-task... par exemple:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    class MyTask extends AsyncTask<.....>
    {
         public static interface OnTaskResults
         {
              public void onTaskFailed(Throwable t);
              public void onTaskSucceeded(JSONArray array);
          }
     
          private Throwable error = null;
          private OnTaskResults callback = null;
     
          public MyTask(OnTaskResults cb) {
               this.callback = cb;
          }
     
          public JSONArray doInBackground() {
                JSONArray ret = null;
                try {
                    ...
                } catch (Throwable t) {
                    this.error = t;
                }
                return ret;
           }
     
           public void onPostExecute(JSONArray result) {
                if (result != null) 
                    this.callback.onTaskSucceeded(result);
                else
                    this.callback.onTaskFailed(this.error);
           }
    }
    Et voila... il suffit d'instancier la tache avec le bon callback.... (voir laisser l'activité implémenter MyTask.OnTaskResults)

  2. #22
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut
    Je ne comprends pas trop l'idée du callback...

    J'ai retrouvé la même idée ici :
    http://www.javaworld.com/javaworld/j...javatip10.html

    Mais ça veut dire qu'il faut absolument que ma classe Splashscreen implémente l'interface ??

  3. #23
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut
    Yep non c'est bon.
    J'ai réussi mon callback grace au code de cette page : http://www.coderanch.com/t/389877/ja.../java-callback
    Donc en effet, il faudra bien implémenter l'interface dans chaque classe ou l'on souhaite le retour.

  4. #24
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut
    Je continue...
    Maintenant j'ai un autre problème :
    Dans mon splashscreen, j'ouvre la base de données sqlite exprès pour vérifier si la base existe.
    1. Si la base n'existe pas, elle est créée : la méthode onCreate de SQLiteOpenHelper est automatiquement appelée, je fais un import de la base depuis le serveur, et j'ajoute toutes les données dans la sqlite. Et Enfin, je ferme mon splashscreen à la fin de la méthode onCreate
    2. Si la base existe, et elle n'est pas à jour : Elle est mise à jour. Même technique que précédement, sauf que c'est la méthode onUpgrade qui est appelée automatiquement. J'importe les mises à jour du serveur, et j'ajoute le tout le dans base locale sqlite. Et Enfin, je ferme mon splashscreen à la fin de la méthode onUpgrade.
    3. Si la base existe, et elle est à jour : Je ferme directement l'activity Splashscreen pour avoir accès à l'application. Sauf que : Comment je ferme l'activity étant donné que ni onCreate, ni onUpgrade n'est appelé ???

    mmmh ?? Vous comprenez ?

Discussions similaires

  1. Mettre à jour un TextView depuis une autre classe
    Par thesmogs dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 21/07/2013, 22h33
  2. Mise a jour d'une Form depuis une autre class
    Par raphi056 dans le forum C#
    Réponses: 1
    Dernier message: 19/12/2009, 13h44
  3. Réponses: 2
    Dernier message: 24/03/2009, 14h14
  4. [Débutant] Lancer procédure depuis une autre classe
    Par pugnator dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2005, 14h50
  5. Acces a un control depuis une autre classe
    Par schnito dans le forum MFC
    Réponses: 5
    Dernier message: 25/01/2004, 22h14

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