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 :

L'animation d'attente ne s'affiche pas


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut L'animation d'attente ne s'affiche pas
    Bonjour,

    Voici l'activité suivante :

    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
    @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    
            // ICI CETTE COMMANDE FONCTIONNE
              // setProgressBarIndeterminateVisibility(true);
    
            setContentView(R.layout.activity_main);
            Button boutonMeteo = (Button) findViewById(R.id.boutonMeteo);
            
            boutonMeteo.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                    // ICI CETTE COMMANDE NE FONCTIONNE PAS
                    setProgressBarIndeterminateVisibility(true);
                    
                    new RequestTask().execute(url);
                    
                   // PAR CONTRE ICI ELLE FONCTIONNE
                    setProgressBarIndeterminateVisibility(false);
                }
            });
        }
    La commande setProgressBarIndeterminateVisibility(true); ne fonctionne pas dans la méthode onClick du bouton. Par contre quand on la positionne avant la méthode onClick (rf. ligne en commentaire) on visualise bien l'animation d'attente dans la barre supérieure de l'application.

    Pour information, la commande setProgressBarIndeterminateVisibility(false); fonctionne bien même dans la méthode onClick du bouton.

    Pouvez-vous m'indiquer l'astuce pour résoudre cela ?

    Merci d'avance.

    A+

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    A quoi correspond le code suivant : new RequestTask().execute(url); ?

    • Soit c'est un traitement qui bloque le thread graphique (et donc l'interface).
    • Soit c'est un traitement en tâche de fond, et donc tu remets immédiatement setProgressBarIndeterminateVisibility() à false...



    a++

  3. #3
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    A quoi correspond le code suivant : new RequestTask().execute(url); ?

    • Soit c'est un traitement qui bloque le thread graphique (et donc l'interface).
    • Soit c'est un traitement en tâche de fond, et donc tu remets immédiatement setProgressBarIndeterminateVisibility() à false...



    a++

    Bonsoir adiGuba,

    Merci pour ta suggestion.

    Mais je ne comprends pas pourquoi new RequestTask().execute(url); peut bloquer l'interface IU.

    Voici son implémentation :
    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
    34
    35
    36
    37
     
    private class RequestTask extends AsyncTask<String, Void, String>
        {
            @Override
            protected String doInBackground(String... regs)
            {
                String response = null;
     
                try
                {
                    response = Weather.getWeather(new URL(regs[0]));
                }
                catch (Exception e)
                {
                    Log.e(this.getClass().getName(), "Erreur WS");
     
                    return null;
                }
     
                return response.substring(0, 10);
            }
     
     
            @Override
            protected void onPostExecute(String result)
            {
                if (result == null)
                {
                    Toast.makeText(MainActivity.this, "Météo non disponible : vérifier le réseau !", Toast.LENGTH_LONG).show();
                }
                else
                {
                    TextView texte = (TextView) findViewById(R.id.texte);
                    texte.setText(result);
                }
            }
        }
    As-tu une idée ?

    Merci encore.

    A+

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    Mais je ne comprends pas pourquoi new RequestTask().execute(url); peut bloquer l'interface IU.
    C'était juste une supposition puisque j'ignorais tout de son implémentation...



    Tu utilises bien un AsyncTask donc tu rentres dans ma seconde supposition : tu remets setProgressBarIndeterminateVisibility() à false immédiatement, bien avant que ton AsyncTask soit terminé (et sûrement avant même qu'il ne soit démarré).

    Les appels à setProgressBarIndeterminateVisibility() doivent être déplacé dans les méthode onPreExecute()/onPostExecute() de ton AsyncTask...


    a++

  5. #5
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Les appels à setProgressBarIndeterminateVisibility() doivent être déplacé dans les méthode onPreExecute()/onPostExecute() de ton AsyncTask...


    a++
    Bonjour,

    Effectivement le code ne s'exécute pas ici de manière séquentielle. Il fallait résonner sur des Thread et leurs accès concurrentiels.

    Merci. +1

    A+

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

Discussions similaires

  1. Animation flash qui ne s'affiche pas en ligne
    Par Thierry_A dans le forum Flash
    Réponses: 1
    Dernier message: 21/09/2008, 11h27
  2. Réponses: 1
    Dernier message: 31/01/2008, 17h13
  3. Réponses: 2
    Dernier message: 28/10/2007, 17h46
  4. gif animé qui ne s"affiche pas sous IE
    Par manaboko dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/08/2007, 16h11
  5. [SWT]jeu n'affiche pas l'animation
    Par miel_pops dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 20/05/2004, 19h20

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