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 :

Problème avec AsyncTask


Sujet :

Android

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Problème avec AsyncTask
    Bonjour à toutes et à tous,

    Dans une application, je voudrais utiliser un AsyncTask pour charger des cartes en arrière plan.

    Voici la structure dans laquelle cela intervient :

    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
    import ...;
    import android.os.AsyncTask;
    import ...;
     
    public class FCH {
     
    	private class AffDalles extends AsyncTask<Void, Void, Void>	{
    		@Override
    		protected Void doInBackground(Void... params) {
    			// charge les cartes voulues
    			return null;
    		}
    	}
     
    	AffDalles affDalles = new AffDalles();
    		...
    		public static void choix_Dalle(...) {
    		...
    		affDalles.exexute();
    		...
    	}
    }
    	...
    Lorsque je compile (je suis sous eclipse), j'obtiens un message d'erreur à la ligne 19 me disant qu'il faut que je rajoute static à la définition de ma classe AffDalles en ligne 15. Dont acte. Mais alors, maintenant, à la définition de ma classe AffDalles, j'ai une nouvelle erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No enclosing instance of type FCH is accessible. Must qualify the allocation with an enclosing instance of type FCH (e.g. x.new A() where x is an instance of FCH).
    N'étant un dieu de l'anglais, j'ai du mal à comprendre ce qu'il faut faire, j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	AffDalles affDalles = new FCH.AffDalles();
    ce qui n'a rien changé à l'affaire.

    Que faire ?

    Merci de votre aide.

    Pierre

  2. #2
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Bonjour,


    As-tu essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void choix_Dalle(...) {
    		...
    		(new affDalles()).exexute();
    		...
    	}
    C'est a dire, sans stocker ton AsyncTask dans ta classe.
    Si ca ne fonctionne toujours pas, tu peux nous mettre ta classe complète?

    GLHF!

  3. #3
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Ce que tu me proposes ne fonctionne pas, mais j'ai résolu le problème en rendant la classe AffDalles statique.

    Par ailleurs, j'ai fait une grosse erreur qui consistait à ne déclarer qu'une seule fois l'instance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	AffDalles affDalles = new AffDalles();
    et à utiliser récursivement :

    En effet, il faut recréer à chaque utilisation une nouvelle instance.

    Cordialement.

    Pierre

  4. #4
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Re,

    Tu ne peux en effet utiliser que des variables static dans des fonctions static (c'est normal puisque les static appartiennent a la classe et pas au instances de la classe).

    Et les AsyncTask sont détruite une fois que leurs taches sont terminé (d’où le fait de devoir ré-instancier a chaque fois).

    En principe, faire un new dans ta fonction static aurait du régler les deux problèmes

    GLHF

  5. #5
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par Altak Voir le message
    ... En principe, faire un new dans ta fonction static aurait du régler les deux problèmes

    GLHF
    C'est ce qui s'est passé .

    Cordialement.

    Pierre

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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