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 :

Exécuter une action à la suite


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut Exécuter une action à la suite
    Salut à tous !

    J'ai créer une application pour écouter une WebRadio.
    Mon problème est que lorsque la personne appuie sur Play, je souhaites que le nom du bouton change et devienne "Chargement..." et qu'une fois chargé, que le bouton devienne "Arrêter la lecture", mais le problème c'est que le bouton passe direct de "Démarrer la lecture" à "Arrêter la lecture" (hors si je supprime le code qui dit qu'une fois la lecture Ok, qu'il affiche "Arrêter la lecture" et bien je vois correctement "Chargement...").
    Alors comment faire pour qu'il m'affiche "Chargement..." ?
    Merci d'avance.

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    package com.radiokafein;
     
    import java.io.IOException;
    import com.ultimate.R;
    import android.app.Activity;
    import android.graphics.Typeface;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.text.Html;
    import android.text.method.LinkMovementMethod;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
     
    public class Main extends Activity implements OnClickListener {
    	MediaPlayer mp = new MediaPlayer();
       public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            Typeface font = Typeface.createFromAsset(getAssets(), "bauhs93.ttf");
            TextView texteView = (TextView) findViewById(R.id.welcome);
            TextView texteView1 = (TextView) findViewById(R.id.url);
            texteView.setTypeface(font);
            texteView1.setTypeface(font);
     
            TextView t1 = (TextView) findViewById(R.id.url);
            t1.setText(
                Html.fromHtml(
                		"<a href=\"http://radiokafein.net\">http://radiokafein.net</a>"));
            t1.setMovementMethod(LinkMovementMethod.getInstance());
            texteView1.setTypeface(font);
     
            ((Button)this.findViewById(R.id.label_controle)).setOnClickListener(this);
     
        	if(!mp.isPlaying()) {
        	    TextView t2 = (TextView) findViewById(R.id.label_controle);
        	    t2.setText(
        	        Html.fromHtml(
        	        		"Démarrer l'écoute !"));
        	    t2.setMovementMethod(LinkMovementMethod.getInstance());
        	}
        }
     
        public void onClick(View v) {
    		if(!mp.isPlaying()) {
    			switch(v.getId()){
    			case R.id.label_controle:
    				try {
    		        	TextView t3 = (TextView) findViewById(R.id.label_controle);
    				    t3.setText(
    				        Html.fromHtml(
    				        		"Chargement... Merci de patienter."));
    				    t3.setMovementMethod(LinkMovementMethod.getInstance());
    				}catch (Exception e) {
    					e.printStackTrace();
    				}
    				try {
    				    mp.reset();
    			        try {
    			                        mp.setDataSource("http://listen.radionomy.com/rkf-champagne");
    			                } catch (IllegalArgumentException e) {
    			                        // TODO Auto-generated catch block
    			                        e.printStackTrace();
    			                } catch (IllegalStateException e) {
    			                        // TODO Auto-generated catch block
    			                        e.printStackTrace();
    			                } catch (IOException e) {
    			                        // TODO Auto-generated catch block
    			                        e.printStackTrace();
    			                }
    			        try {
    			                        mp.prepare();
    			                } catch (IllegalStateException e) {
    			                        // TODO Auto-generated catch block
    			                        e.printStackTrace();
    			                } catch (IOException e) {
    			                        // TODO Auto-generated catch block
    			                        e.printStackTrace();
    			                }
    			        mp.start();
     
    			    	if(mp.isPlaying()) {
    			    	    TextView t2 = (TextView) findViewById(R.id.label_controle);
    			    	    t2.setText(
    			    	        Html.fromHtml(
    			    	        		"Arrêter l'écoute !"));
    			    	    t2.setMovementMethod(LinkMovementMethod.getInstance());
    			    	}
     
    				}catch (Exception e) {
    					e.printStackTrace();
    				}
    				break;
    			}
        	}else{		
    			if(mp.isPlaying()) {
    				switch(v.getId()){
    				case R.id.label_controle:
    					try {
    						mp.stop();
    			    	    TextView t2 = (TextView) findViewById(R.id.label_controle);
    			    	    t2.setText(
    			    	        Html.fromHtml(
    			    	        		"Démarrer l'écoute !"));
    			    	    t2.setMovementMethod(LinkMovementMethod.getInstance());
    					}catch (Exception e) {
    						e.printStackTrace();
    					}
    					break;
    				}
    	    	}
        	}
        }
    }

  2. #2
    Expert éminent

    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
    Points : 9 149
    Points
    9 149
    Par défaut
    Essaye de faire un invalidate() ou un postinvalidate() sur ta textView s, ca le forcera a déclencher le onDraw().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t3.setText(Html.fromHtml("Chargement... Merci de patienter."));
    t3.invalidate();

  3. #3
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Salut,

    Il s'agit d'un problème d'UI Thread :
    http://davy-leggieri.developpez.com/...oid/ui-thread/

    Pour le résoudre, passe par la commande pour demander à l'UI thread de traiter ton changement de label aussi vite que possible (runOnUiThread)..

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 90
    Points : 41
    Points
    41
    Par défaut
    Merci de vos réponse, mais avec RunOnUIThread je n'y arrive pas, j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public void onClick(final View v) {
            runOnUiThread(new Runnable() {
                public void run() {
                	UpdateIHM2();
                	UpdateIHM(v);
                }
            });
        }
    Mais sans succès, le tout se fait toujours simultanément et pas à la suite, du coup on ne voit pas le changement de label temporaire :s
    J'ai beau me renseigner sur Google j'ai toujours du mal :s

Discussions similaires

  1. [Drupal] Exécuter une action suite à l'envoi d'un webform
    Par skeut dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/03/2014, 13h41
  2. [WD10] Exécuter une action suite au clic de la souris
    Par lepirate dans le forum WinDev
    Réponses: 1
    Dernier message: 07/02/2008, 22h35
  3. Exécuter une action quand on ferme le navigateur
    Par Leobaillard dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/01/2006, 12h41
  4. Réponses: 1
    Dernier message: 25/10/2005, 13h25
  5. Exécuter une action à la fermeture d'une fenêtre
    Par wwave dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 28/07/2005, 15h15

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