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 :

Service en tant que controller (MVC)


Sujet :

Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 64
    Points : 71
    Points
    71
    Par défaut Service en tant que controller (MVC)
    Bonjour,

    Je souhaite me servir d'un service en tant que controller d'un MVC. Théoriquement ça devrait marcher, mais j'ai un souci.

    J'instancie mon service dans l'activity principale. C'est lui qui gèrera ensuite l'affichage des activity successives.

    Pour le lancement de la première activity, pas de souci: je bind le service, je fais mes traitements et je récupère un résultat. Je lance ensuite une seconde activity, mais j'ai un souci: je bind le service, mais quand je souhaite accéder à une donnée j'obtiens un "java null pointer exception".

    Voilà un bout de mon code:

    Dans chaque activity j'ai ça:

    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
     
    private MyController mController
    private ServiceConnection mControllerConnection = new ServiceConnection() {
    	    public void onServiceConnected(ComponentName className, IBinder service) {
    	        LocalBinder binder = (LocalBinder) service;
    	        mController = binder.getService();
    	        mBound = true;
    	    }
     
    @Override
    	protected void onStart() {
    		super.onStart();
    		Intent intent = new Intent(this, MyController.class);
    	        bindService(intent, mControllerConnection, Context.BIND_AUTO_CREATE);
     
    		EditText editTextAmount = (EditText) findViewById(R.id.edtTxtAmount1);
    		try{
    		editTextAmount.setText(mController.donnée_à_récupérer);
    		}
    		catch (Exception e){
    			editTextAmount.setText(e.toString());    // cette exception est levée
    		}
    	}
     
    	@Override
    	protected void onDestroy() {
    		unbindService(mControllerConnection);
    		super.onDestroy();
    	}

    Et dans le service, je lance les activity comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Intent intent = new Intent(this, NextActivity.class);
    			intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    			startActivity(intent);
    J'ai pensé à un problème de flag mais je n'ai pas tout compris.
    Merci d'avance

  2. #2
    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
    Par définition un service est un "thread" à part...
    Il n'est donc pas forcément démarré tout de suite, et le bind n'est pas fini immédiatement (ce qui crée probablement le NPE, il faudrait vérifier à quelle endroit du code ce NPE se produit...).
    Il faut attendre l'évenement de bind fini pour pouvoir accéder au service.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 64
    Points : 71
    Points
    71
    Par défaut
    J'ai trouvé entre-temps, c'est exactement ça, merci ! J'avais omis ce détail des services

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

Discussions similaires

  1. SmartTag en tant que controle ?
    Par Nidel dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/08/2008, 17h01
  2. [EJB] Exposer en tant que Web Service ?
    Par Nycos62 dans le forum Java EE
    Réponses: 18
    Dernier message: 12/05/2005, 16h41
  3. [Windows] [Zope] Zope en tant que service
    Par santhony dans le forum Zope
    Réponses: 3
    Dernier message: 09/11/2004, 19h48
  4. Postmaster en tant que service NT
    Par krimson dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 16/04/2004, 09h08

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