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 :

Toast dans une AsyncTask


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Toast dans une AsyncTask
    Bonjour,

    je cherche a signifier via un toast que la variable port est nulle avant de lancer le Socket

    Le code ci dessous me retourne une erreur sur le maketext
    "The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (ClientSocket, String, int)"


    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
     
     
    package com.example.planar;
     
     
    import java.io.IOException;
    import java.net.Socket;
    import android.os.AsyncTask;
    import android.widget.Toast;
     
    public class ClientSocket extends AsyncTask <String, Void, String> {
     
     
     
     
    			    @Override
    			    protected String doInBackground(String... params) {
     
    			       Socket comm = null;
    			 	   String returnString = null;
     
    			 	    // recupere la chaine du port a utiliser et la transforme en int
    			 	    int port = Integer.parseInt(params[1]);
     
    			 	    if (port== 0) {
     
    			 	    	 Toast.makeText(this, "please select a socket port", Toast.LENGTH_LONG).show();
    			 	    				 	    }
     
    			 	    try
    			 	    {
    			 	      comm = new Socket(params[0], port);
    			 	      comm.getOutputStream().write(params[2].getBytes());
    			 	    }
     
    			 	    catch(Exception e)
     
    			 	    {
    			 	     returnString ="Exception " + e.toString();
    			 	    }
    			 	    finally
     
    			 	    {
    			 	      if (comm!=null)
    						try {
    							comm.close();
    						} catch (IOException e) {
    						}
    			 	    }
     
    			 	  return returnString ;
     
     
     
    			    }
    		}

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur Informatique et Développeur Android
    Inscrit en
    Janvier 2010
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique et Développeur Android

    Informations forums :
    Inscription : Janvier 2010
    Messages : 384
    Points : 321
    Points
    321
    Par défaut
    Bonjour,
    on ne peux pas travailler avec les Toats dans un event que se déroule dans le background
    vous devez travailler avec le méhode onPostExecute. Ce lien peut vous aidezzz

  3. #3
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Surtout... le test peut être fait *avant* que la tâche ne soit démarrée... bien plus facile à mettre en oeuvre.

    Si c'est pour créer une classe de tâche "utilitaire" (et donc vérifier que le code appelant ne fait pas de bêtise) dans ce cas, c'est à l’instanciation de la tâche que la vérification doit être faite.

    Dans tous les cas, ne pas passer de paramètres hétérogènes à la fonction execute, c'est un coup à se manger les pieds dans le tapis (et perdre tout intérêt d'un langage fortement typé comme java).

    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
     
    class ClientSocket  extends AsyncTask <String, Void, String> {
    {
         String server;
         int      serverPort;
     
         public ClientSocket(String host, int port)
         {
             this.server = serv;
             // test validité de serv
             this.serverPort= port;
             if (port < 1024 || port > 65535)
                 throw new IllegalArguementException("Invalid port given ("+port+").");
         }
     
         @Override
         protected String doInBackground(String... params) {
            ... utilisation de this.server et this.serverPort
         }
    }
    Une autre manière de gérer sans passer par un constructeur est d'avoir une liste "d'URL"...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/09/2013, 16h16
  2. Utiliser AsyncTask dans une classe de Service ?
    Par bza88 dans le forum Android
    Réponses: 1
    Dernier message: 28/05/2013, 01h15
  3. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39
  4. Réponses: 3
    Dernier message: 09/05/2002, 01h39
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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